マークアップの例を次に示します。
<form id="formID">
<input type="text" id="filteredInput">
<input type="text" id="anotherInput">
</form>
次のロジックを使用して、キーボード入力をトラップできます (この場合、jQuery ドキュメント対応ラッパーを介して)。
少し間抜けに見えるかもしれませんが、基本的に、許可したいすべてのものをチェックし(あなたの場合、AからZまでの文字は大文字と小文字を区別しません)、何もしません. つまり、デフォルトのアクションは許可されますが、アルファ以外の入力は禁止されます。
矢印キー、Home、End、Tab、Backspace、Delete などの標準的なキーボード ナビゲーションがチェックされ、許可されます。
注: このコードはもともと、英数字 (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>