Вот пример разметки:
<form id="formID">
<input type="text" id="filteredInput">
<input type="text" id="anotherInput">
</form>
Следующая логика может использоваться для перехвата ввода с клавиатуры (в данном случае через готовую оболочку для документов jQuery).
Это может показаться немного глупым, но в основном я проверяю все, что я хочу разрешить (в вашем случае, буквы от A до Z нечувствительны к регистру) и ничего не делают . Другими словами, действие по умолчанию разрешено, но любой ввод, кроме альфа, запрещен.
Проверяется и разрешается стандартная навигация с помощью клавиатуры, например клавиши со стрелками, Начало, Конец, Вкладка, Возврат, Удалить и т. Д.
ПРИМЕЧАНИЕ. Этот код изначально был написан для удовлетворения пользовательского ввода, допускающего только буквенно-цифровые значения (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>