2012-01-02 72 views
0

我有以下的一些代碼的一部分 - 你可以在http://jsfiddle.net/73c3X/1/的jQuery沒有試圖捕捉的keyCode

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!時刻?

+0

喜是有一點的一齣戲以此爲還沒有真正的工作太多了使用jQuery,我忽略了你的HTML等,並[這裏](HTTP://的jsfiddle .net/dafastestfingers/73c3X/16 /)我想出了。我注意到的一些事情是'esc'只能在'keyup'上識別,我的筆記本電腦上的鍵盤與[this](http://www.webonweboff.com/tips/js/event_key_codes.aspx)資源的鍵盤編碼略有不同我想有些事情要做的數字鍵盤(或在我的情況下缺乏)。希望這有助於在一定程度上 – 2012-01-02 22:12:56

+0

謝謝湯姆欣賞你的輸入 – Steve 2012-01-03 01:01:48

回答

0

你應該這樣做:

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

該死的布爾!謝謝 – Steve 2012-01-02 21:03:02

1

應該

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

在代碼的beggining只要你想捕獲所有,但是這三個。另外,不要忘記箭頭,因爲它們可以用來移動和編輯號碼。

+0

是的,箭頭來了,只是想清除這個障礙 - +1的建議 – Steve 2012-01-02 21:03:44