此函数执行以下操作
- 不允许字符
- 允许退格
- 有高限值
- 有低限值
- 的最小步长为0.1即不小于0.1即不小于0.01
不工作的是允许负数进入函数
<html>
<input id="setPoint" type="text" name="setPoint" onkeydown="myFunction(event,-80, 150)" />
<script>
function myFunction(e, low, high) {
console.log("low" + low);
console.log("high" + high);
var nextValue = e.target.value + e.key;
console.log("NEXT VALUE:" + nextValue);
if (e.which == 8) { // allow backspace
return;
}
if (!/^(d+)?([.]?d{0,1})?$/.test(nextValue)) {
e.preventDefault(); // non-number, don't allow
}
if (nextValue > high) {
e.preventDefault();
}
if(nextValue< low){
e.preventDefault();
}
}
</script>
</html>
您的regex已经差不多完成了,但是还需要添加一些内容。试试这个正则表达式:
/^-?d+(.d+)?$/
你目前的实现也不允许,例如,10.24
,上面应该工作得很好。如果这是故意的,只需将d+
更改为d
-这将确保,如果用户输入.
,他们至少在后面有一个数字。