我正在使用此功能仅在文本框中输入数字并且它有效。
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
但客户要求我限制-
签名,以便用户不要输入 - 签名。所以我将代码修改为
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode == 45)
return false;
return true;
}
现在它不起作用,它也允许字母,为什么?
答案 0 :(得分:2)
小组中需要||
:
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode;
var bool = (charCode > 31) && (charCode < 48 || charCode > 57 || String.fromCharCode(charCode) == "-");
return !bool;
}
<input type="text" onkeypress='return isNumberKey(event)'>
答案 1 :(得分:1)
您应该在测试中使用||
代替&&
在我的azerty
键盘上,-
符号字符代码为54
,而不是45
。
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57 || charCode == 45) )
return false;
return true;
}
请参阅this fiddle
修改强>
看起来像你的charCode is correct。 54
值来自我的azerty
键盘
不过,您应该在支票中使用||
代替&&
。