javascript - 仅接受数字和短划线字符的输入文本字段

标签 javascript

我使用常用​​的 Javascript 函数只允许将数字输入到文本字段中:

function isNumberKey(evt)
{
  var charCode = (evt.which) ? evt.which : event.keyCode;
  if (charCode != 46 && charCode > 31
    && (charCode < 48 || charCode > 57))
     return false;

  return true;
}

我称之为 onkeypress ,它可以防止显示数字以外的任何内容。我正在尝试更改它,以便我也可以将破折​​号 (-) 放入文本字​​段。破折号键码是 189 所以我试过这个:
function isNumberKey(evt)
{
  var charCode = (evt.which) ? evt.which : event.keyCode;
  if (charCode != 46 && charCode != 189 && charCode > 31
    && (charCode < 48 || charCode > 57))
     return false;

  return true;
}

认为条件语句会接受破折号,但这似乎不起作用。关于为什么会这样的任何想法?谢谢你的帮助!

最佳答案

如果您使用的是按键事件,则需要将字符代码 45 用于破折号/连字符。

如果您使用的是 keydown/keyup 事件,那么您需要使用 109 和 189 来覆盖数字键盘中的减号键和位于 P 键上方的那个(通常)。

if (charCode != 46 && charCode != 45 && charCode > 31
    && (charCode < 48 || charCode > 57))
     return false;

演示:http://jsfiddle.net/J6B7U/

如果您对哪个键码是哪个 console.log(charCode); 有疑问在您的函数中将帮助您调试。

(另请注意,捕获键事件不足以防止输入无效数据,因为用户可以使用浏览器的编辑菜单或拖放来更改字段。)

关于javascript - 仅接受数字和短划线字符的输入文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19785288/

相关文章:

javascript - 如何在 5 分钟不活动后更改页面位置

javascript - 如何向(对象的)嵌套 javascript 数组添加属性?

javascript - 根据屏幕尺寸使用 jQuery 动态包裹 div

javascript - 未捕获的类型错误 : undefined is not a function (on video pause function)

javascript - Sails.js 的模型是否具有像 Django 中的模型那样的反向引用功能?

javascript - JavaScript 中的隐私

javascript - Raspberry Pi - JavaScript 在 chromium kiosk 模式下不起作用

javascript - 将鼠标悬停在 JavaScript 幻灯片上时暂停

javascript - 滚动到页面顶部后使导航栏恢复正常

javascript - 在本地主机中运行应用程序时,应用程序缓存不起作用?