我试图将文本字段中的键盘输入限制为数字 [0-9]
和减号 -
(禁止复制/粘贴等)显然还有删除键。
该代码适用于限制数字和删除键,但不适用于减号 -
部分。
用户应该只能在号码前面输入减号 -
,如果他们尝试输入 1
,则输入 -
它不应该输入 -
但现在 -
部分根本不起作用。
fiddle :http://jsfiddle.net/7XLqQ/1/
我认为这段代码是问题所在,但看起来不错。它检查文本输入是否为空,如果是,则输入减号 -
。
// Only enter the minus sign (-) if the user enters it first
if (unicode == 45 && input.value == "") {
return true;
}
我的完整代码:
<input type="text" maxlength="10" id="myInput">
<script>
var input = document.getElementById("myInput");
input.onkeypress = function(e) {
var unicode = e.keyCode;
if (unicode == 49 || unicode == 50 || unicode == 51 || unicode == 52 || unicode == 53 || unicode == 54 || unicode == 55 || unicode == 56 || unicode == 57 || unicode == 48) {
return true;
} else {
return false;
}
// Only enter the minus sign (-) if the user enters it first
if (unicode == 45 && input.value == "") {
return true;
}
};
</script>
最佳答案
我建议:
var input = document.getElementById("myInput");
input.onkeypress = function(e) {
switch (e.keyCode){
case 45:
return this.value.length == 0 ? true : false;
break;
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
return true;
break;
default:
return false;
break;
}
};
您的原始代码失败的原因很简单,就是在评估 if
条件之前您已经从函数返回。在此版本中,如果按下 -
键,则如果没有当前值,三元数将返回 true
(因此 -
将是第一个字符) ,或者 false
如果已经有一个值(因此 -
将不是第一个字符)。
关于javascript - 文本输入 : Limit input to numbers (0-9) and the minus sign (-). 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15014054/