Вот пример разметки:
<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>
`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