我有一个html <input type="number">
框,其中包含一些自定义验证逻辑。有效值是x
或x < -100
的任何整数x >= 100
。
我的目标是实现此行为:
100
时,该值将更改为-101
。-101
时,该值将更改为100
。一些警告:
10
才能输入109
。并且已经出现验证逻辑。答案 0 :(得分:0)
我不确定我是否得到你想要的东西。是这样的吗?
var number = document.getElementById('number-input');
number.onchange = function(event) {
if(number.value > 100) {
number.value = -101;
} else if(number.value < -100) {
number.value = 101;
}
};
<input type="number" id="number-input">
答案 1 :(得分:0)
我认为我有你需要的东西,或者至少我已经接近了:
window.onload = function() {
function changeNum(input, typing) {
var lower=-101, upper=100, x=parseInt(input.value), active=(input==document.activeElement);
if ((typing && String(Math.abs(x)).length>2 && lower<x&&x<upper) || (!typing && lower<x&&x<upper)) {
if (Math.abs(x-upper) < Math.abs(x-lower)) {input.value = (!active||typing?upper:lower);}
else {input.value = (!active||typing?lower:upper);}
}
}
document.getElementById("num").addEventListener("keyup",function(){changeNum(this,true);},false);
document.getElementById("num").addEventListener("change",function(){changeNum(this,false);},false);
};
<input type="number" id="num" value="100" />
-100 -> 100
,99 -> -101
)上翻转。-100 -> -101
,99 -> 100
)。-100 -> -101
)。
String(Math.abs(x)).length>2
更改为额外的if子句,并首先检查该值是正还是负,然后检查单独的长度。