2010-07-07 77 views
1

我想阻止用戶在文本框中輸入某些字符(只允許[a-z],[A-Z]和下劃線)。我把這個從以前的Q,但如果我按箭頭鍵(在FF 3.6),我得到一個js錯誤:阻止在文本框中鍵入某些字符?

"window.event is undefined" 

這是原代碼,我能在這個變化window.event來情況?:

$("#myTextBox").bind("keypress", function(event) { 
    var charCode = (event.which) ? event.which : window.event.keyCode; 
    if (charCode <= 13) { 
     return true; 
    } 
    else { 
     var keyChar = String.fromCharCode(charCode); 
     var re = /[a-zA-Z_]/ 
     return re.test(keyChar); 
    } 
}); 

感謝

回答

9

你可以做這樣的:

$("#myTextBox").bind("keypress", function(event) { 
    var charCode = event.which; 
    if (charCode <= 13) return true; 

    var keyChar = String.fromCharCode(charCode); 
    return /[a-zA-Z_]/.test(keyChar); 
});​ 

jQuery normalizes event.which already ...和you can test it here :)

如果沒有,修復也只是event.keyCode,要參考event作爲參數傳遞給這個函數,而不是window一個屬性傳遞。在這種情況下,如果if條件成立,它會返回...因此不需要if/else,您可以像我上面那樣簡化它。

+0

是的,似乎正常化了,謝謝! – user291701 2010-07-07 22:27:22

+1

鏈接到jQuery源代碼...令人興奮! – Narayana 2012-04-10 14:49:41

+0

我們可以使用Change事件嗎? – 2014-07-16 07:00:19

0

只需刪除窗口,因爲你的事件是在jQuery中定義的($)

相關問題