Html多个input[range]同时使用且共用同一个总数量

需求:Html多个input[range]同时使用且共用同一个总数量,并且多个滑动块加一起的数量不得超过总数,等于总数时禁止向右滑动,可以向左滑动

实现效果

在这里插入图片描述

不废话直接上代码

懂的都懂

<html>
	<head>
		<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
		<style>
			input[type=range] {
				margin-top: 10px;
				margin-bottom: 10px;
				/*margin-top: 8px;*/
				outline: none;
				-webkit-appearance: none;
				/*清除系统默认样式*/
				width: 100% !important;
				background: -webkit-linear-gradient(rgba(0, 85, 255, 1.0), rgba(204, 46, 6, 1.0)) no-repeat, rgba(228, 231, 237, 1);
				background-size: 0% 100%;
				/*设置左右宽度比例*/
				height: 6px;
				/*横条的高度*/
			}

			/*拖动块的样式*/
			input[type=range]::-webkit-slider-thumb {
				-webkit-appearance: none;
				/*清除系统默认样式*/
				height: 16px;
				/*拖动块高度*/
				width: 16px;
				/*拖动块宽度*/
				background: #fff;
				/*拖动块背景*/
				border-radius: 50%;
				/*外观设置为圆形*/
				border: solid 2px #ff0000;
				/*设置边框*/
			}
		</style>
	</head>
	<body>
		<input type="text" id="total" value="50" readonly="readonly" />
		<span><input type="range" setp=1"" min="0" max="50" value="0" οninput="change(this)" /><span
				class="num">0</span>
			<span><input type="range" setp=1"" min="0" max="50" value="0" οninput="change(this)" /><span
					class="num">0</span>
				<span><input type="range" setp=1"" min="0" max="50" value="0" οninput="change(this)" /><span
						class="num">0</span>
					<span><input type="range" setp=1"" min="0" max="50" value="0" οninput="change(this)" /><span
							class="num">0</span>

						<script>
							$(function() {
								changeInit()
							})

							function changeInit() {
								var nodes = $("input[type=range]");
								var current_total = 0;
								var max = 50;
								for (let i = 0; i < nodes.length; i++) {
									var node = nodes[i];
									var value = $(node).val();
									var valStr = (value / max * 100) + "% 100%";
									// $('#value1').html(value);
									$(node).css({
										"background-size": valStr
									})
									$(node).siblings(".num").html(value);
									current_total += Number(value);
								}
								$("#total").val(50 - current_total)
							}

							function getsy(t) {
								var ysy = 0;
								var nodes = $("input[type=range]");
								//获取已经使用的数量抛开当前
								for (let i = 0; i < nodes.length; i++) {
									var node = nodes[i];
									var value = $(node).val();
									ysy += Number(value);
								}
								var value = $(t).val();
								ysy = ysy - value;
								return Number(ysy)
							}

							function change(t) {
								var max = 50;
								// 已使用
								var ysy = getsy(t)
								var sy = max - ysy;
								// console.info(sy)
								var value = $(t).val();
								if (value >= sy) {
									var valStr = (sy / max * 100) + "% 100%";
									$(t).val(sy)
									$(t).css({
										"background-size": valStr
									})
								} else {
									var valStr = (value / max * 100) + "% 100%";
									$(t).css({
										"background-size": valStr
									})
								}
								this.changeInit();
							}
						</script>
	</body>
</html>

此处声明本人并非前端,不喜勿喷,有帮助可以拿去参考或使用

多个input共用一个input事件的方法有多种。其中一种方法是使用switch函数或if语句来区分不同的input,并根据不同的input进行相应的处理。在React开发中,可以给每个input设置一个onChange事件,并通过事件处理函数中的参数来判断是哪个input触发了事件。然后可以使用setState方法来更新对应的input的状态。例如,在React中可以这样处理多个input共用一个input事件: ```jsx <input placeholder='请输入' onChange={this._onInput} value={this.state.inputValue} /> ``` 在_onInput事件处理函数中,可以使用switch函数或if语句来判断是哪个input触发了事件,并根据不同的input进行相应的处理。例如: ```jsx _onInput(event) { const inputId = event.target.id; const inputValue = event.target.value; switch (inputId) { case 'input1': this.setState({ input1: inputValue }); break; case 'input2': this.setState({ input2: inputValue }); break; // 其他input的处理 default: break; } } ``` 这样就可以实现多个input共用一个input事件的处理。每个input的值会根据事件处理函数中的判断逻辑进行更新。 #### 引用[.reference_title] - *1* *2* *3* [关于React处理input的方法和多个input共用一个方法(不用jQuery)](https://blog.csdn.net/weixin_45872877/article/details/107287625)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一名技术极客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值