小编kim*_*imi的帖子

keyCode问题 - 无法阻止输入%字符

在我的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);
}
Run Code Online (Sandbox Code Playgroud)

测试完这段代码后,我发现左箭头和%特殊字符的keyCode都是37的问题.所以我不能阻止用户输入%字符,同时允许左箭头.我不知道为什么会这样.我一直认为keyCode对于键盘上的每个键都应该是唯一的.我想过使用onkeyup而不是onkeypress.但是onkeyup会允许用户先输入无效字符,然后从输入文本中删除.这种行为不是我想要的.任何建议将不胜感激.

我调试了FireFox中的代码,发现了以下区别.

1.如果输入%,event.which == 37和event.keyCode == 0
2.如果输入左箭头,则event.which …

javascript keycode

6
推荐指数
1
解决办法
3917
查看次数

标签 统计

javascript ×1

keycode ×1