我在输入框中添加停止验证时遇到了一些问题。仅允许数字(第二条件)的限制有效,但第一个条件也可能不存在。完整停止和小数点仍未出现在输入框中。
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode == 110 || charCode == 190)
return true;
else if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
此外,我注意到这个JS的行为在不同的浏览器中是不同的。在FireFox中,我可以使用数字键盘输入值。但是,在Chrome中,我仅限于排名第一的数字。浏览器都不允许小数点。
答案 0 :(得分:1)
onkeypress
不会报告密钥代码,它会报告输入的ASCII字符。你想要onkeydown
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode == 110 || charCode == 190)
return true;
else if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
document.getElementById('foo').onkeydown = isNumberKey;
&#13;
<input type="text" id="foo" />
&#13;