仅允许数字和字母在Mozilla Firefox中不起作用

时间:2014-04-11 18:52:07

标签: javascript

如何让它在Mozilla Firefox中运行? 它在IE和Chrome中运行得很好

<script type='text/javascript'>//<![CDATA[ 

function isNumberLetter(evtNL)  {

            if ((evtNL.keyCode >= 48 && evtNL.keyCode <= 57) ||
               (evtNL.keyCode >= 65 && evtNL.keyCode <= 90) ||
               (evtNL.keyCode >= 97 && evtNL.keyCode <= 122))
                return true;

             return false;
        }//]]>  

</script>

3 个答案:

答案 0 :(得分:1)

嗯,似乎第三条评论(@dandavis)是正确的。我在Firefox 30.0(Aurora)中试过这个:

document.body.onkeypress = function (e) {
    console.log(e.keyCode);
    console.log(e.key);
}

给出了这样的结果:

0 
"a" 
0 
"b" 
0 
"c" 
0 
"d"

如果我将onkeypress更改为onkeydownonkeyup,则可以正常使用:

65 
"a" 
66 
"b" 
67 
"c" 
68 
"d"

编辑:

正如@adeneo所建议的那样e.which似乎也适用于按键。

答案 1 :(得分:1)

如果您捕获了按键事件,则可以获取charCode:

$(document.body).on('keypress', function(event) {
    var isAlphaNum = String.fromCharCode(event.charCode).match(/[a-zA-Z0-9]/);
    if(isAlphaNum) {
        console.log('Letter or number');
    } else {
        console.log('Other key');
    }
});

答案 2 :(得分:0)

在看了Mozilla's developer network entry on keyboard events后,你似乎应该使用event.key - 假设你正在传递一个事件。 keyCode似乎已被弃用。

然而,event.key尚未实现。 @dandavis指出,无论如何,使用keyCode应该是跨浏览器。