下面是示例標記:
<form id="formID">
<input type="text" id="filteredInput">
<input type="text" id="anotherInput">
</form>
下面的邏輯可以(經由一個jQuery文檔準備包裝在這種情況下,)被用來捕獲鍵盤輸入。
它可能讀取有點愚蠢,但基本上,我檢查我想要允許的一切(在您的情況下,字母A到Z不區分大小寫)並且什麼都不做。換句話說,默認行爲是允許的,但是除alpha之外的任何輸入都被阻止。
標準鍵盤導航,如箭頭鍵,Home鍵,End,Tab鍵,Backspace鍵,刪除等的檢查和允許的。
注意:此代碼原文,以滿足用戶輸入只允許字母數字值(A - Z,A - Z,0 - 9),我離開那些線完好爲註釋。
<script>
jQuery(document).ready(function() {
// keydown is used to filter input
jQuery("#formID input").keydown(function(e) {
var _key = e.which
, _keyCode = e.keyCode
, _shifted = e.shiftKey
, _altKey = e.altKey
, _controlKey = e.ctrlKey
;
//console.log(_key + ' ' + _keyCode + ' ' + _shifted + ' ' + _altKey + ' ' + _controlKey);
if(this.id === jQuery('#filteredInput').prop('id')) {
if(
// BACK, TAB
(_key === 8 || _key === 9) // normal keyboard nav
){}
else if(
// END, HOME, LEFT, UP, RIGHT, DOWN
(_key === 35 || _key === 36 || _key === 37 || _key === 38 || _key === 39 || _key === 40) // normal keyboard nav
){}
else if(
// DELETE
(_key === 46) // normal keyboard nav
){}
else if(
(_key >= 65 && _key <= 90) // a- z
//(_key >= 48 && _key <= 57 && _shifted !== true) || // 0 - 9 (unshifted)
//(_key >= 65 && _key <= 90) || // a- z
//(_key >= 96 && _key <= 105) // number pad 0- 9
){}
else {
e.preventDefault();
}
}
});
});
</script>
來源
2015-07-21 22:41:55
Mac
`keyCode`在所有瀏覽器中都不存在。小心一點。 – jwueller 2010-11-26 13:25:59
@elusive:對於`keypress`事件,你是對的。對於`keydown`事件,`keyCode`存在於所有主流瀏覽器中。 – 2010-11-26 13:46:25
請參考我以前的答案 [http://stackoverflow.com/questions/2859587/javascript-keycode-46-is-del-function-key-or-period-sign/28295546#28295546][1] [1]:http://stackoverflow.com/questions/2859587/javascript-keycode-46-is-del-function-key-or-period-sign/28295546#28295546 – 2015-02-03 09:38:30