【发布时间】:2013-03-30 05:18:14
【问题描述】:
在我的 HTML 页面中有一个输入文本字段。我只想输入键盘上的数字键和左/右箭头。我尝试了以下 JavaScript,但遇到了问题。
<input onkeypress="return allowNumberOnly(event)" />
function allowNumberOnly(event) {
event = event || window.event;
var charCode = (event.which) ? event.which : event.keyCode;
//keyCode 48-57 represent the number 0-9
//keyCode 37,39 represent the Left and Right arrow
//keyCode 46 represent the Delete key
//keyCode 8 represent the Backspace key
return charCode == 37 || charCode == 39 || charCode == 46 || charCode == 8
|| (charCode >= 48 && charCode <= 57);
}
在测试这段代码后,我发现了一个问题,左箭头和%特殊字符的keyCode都是37。所以我不能阻止用户输入%字符同时允许左箭头。我不知道为什么会这样。我一直认为 keyCode 对于键盘上的每个键都应该是唯一的。我想过使用 onkeyup 而不是 onkeypress。但是 onkeyup 将允许用户首先输入无效字符,然后从输入文本中删除。这种行为不是我想要的。任何建议将不胜感激。
我在 FireFox 中调试了代码,发现有以下不同。
1.如果输入 %, event.which == 37 和 event.keyCode == 0
2.如果输入左箭头,event.which == 0 and event.keyCode == 37
使用这种差异似乎可以解决问题。我将继续在 IE 和 Chrome 中尝试。
【问题讨论】:
标签: javascript keycode