jquery没有捕获keyCode

时间:2012-01-02 20:49:52

标签: jquery

我将以下内容作为某些代码的一部分 - 您可以在http://jsfiddle.net/73c3X/1/

看到它
    if (txt.val().length >= 10 && (event.keyCode != 46 || event.keyCode != 8 || event.keyCode != 9)) {
        alert(txt.val().length + "keycode = " + event.keyCode);
        event.preventDefault();
        $('.onlynumbers').text("10 digits in mobile").show(200);
    }

这个想法是防止有人输入超过10位的数字并显示信息。

我原本期待这行

if(txt.val().length >= 10 && (event.keyCode != 46 || event.keyCode != 8 || event.keyCode != 9))

允许使用制表符,退格键或删除键,但正如您在小提琴中看到的那样,它们会通过if语句并触发警报 - 这甚至会显示长度= 10且keyCode = 9

对我来说看起来很好,显然不是。我错过了什么,或者这是一个DOH!时刻?

2 个答案:

答案 0 :(得分:1)

应该是

if(txt.val().length >= 10 && (event.keyCode != 46 && event.keyCode != 8 && event.keyCode != 9))

在代码的开头,因为你想要捕获所有但是那三个。此外,不要忘记箭头,因为它们可用于移动和编辑数字。

答案 1 :(得分:0)

你应该这样做:

if (txt.val().length >= 10 && event.keyCode != 46 && event.keyCode != 8 && event.keyCode != 9) {