我使用常用的 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/