Javascript 验证不允许使用句点/小数点

标签 javascript validation

我在向输入框添加停靠点验证时遇到一些问题。仅允许数字的限制(第二个条件)有效,但第一个条件也可能不存在。输入框中仍然没有出现句号和小数点。

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/

相关文章:

javascript - 绑定(bind)事件的正确元素

c# - C# 中 Datagridview 单元格值的验证

javascript - 使用 javascript 进行表单验证的 "right"方法是什么?

c# - 自定义验证属性调用另一个验证属性

jquery - 如何使用 onclick 函数进行验证

Javascript - 将 `elem.style.left` 转换为整数?

javascript - 想从表中获取所有元素

javascript - 分割键 : value; pairs and exclude whitespace in matches

javascript - html选择选项将javascript函数应用于div

asp.net - DataAnnotation [DataType(DataType.Date)] 使我的字段不必要地成为必填项