我在向输入框添加停靠点验证时遇到一些问题。仅允许数字的限制(第二个条件)有效,但第一个条件也可能不存在。输入框中仍然没有出现句号和小数点。
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 中我仅限于顶行数字。这两种浏览器都不允许小数点。
最佳答案
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;
<input type="text" id="foo" />
关于Javascript 验证不允许使用句点/小数点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33441435/