Существует способ сделать это с KeyDown, если нажатие клавиши не выполнима из-за событий, отменяющих потребностей и т.д. Используйте оператор, если() с этим тестом:
parseInt(event.keyIdentifier.substring(2),16) > 47 && parseInt(event.keyIdentifier.substring(2),16) < 58
ИЛИ, с событиями JQuery:
parseInt(event.originalEvent.keyIdentifier.substring(2),16) > 47 && parseInt(event.originalEvent.keyIdentifier.substring(2),16) < 58
Эти примеры предполагают, что событие является событием keydown. keyIdentifier - это шестнадцатеричное число, которое представляет значение unicode для связанного символа. Используя keyIdentifier, цифры с цифровой клавиатуры и клавиатуры, а цифры над клавиатурой QWERTY будут иметь одинаковые значения, 48 - 57 (U + 0030 - U + 0039), даже с событием keyDown.
Значения Юникода в браузерах будут выглядеть как U + 0030 или U + 002F. Разберите эту строку, чтобы получить только шестнадцатеричное значение, затем используйте parseInt() с радиусом 16, чтобы преобразовать его в base-10.
Предположим, что я и хочу реальные символы с клавиатуры, а также хотят, чтобы захватить и остановить клавишу ввода, чтобы предотвратить отправки формы? Останавливает нажатие клавиши. – enigment
Я не могу выразить, насколько я благодарен за этот ответ. Это было мое спасение, пытаясь поймать все возможные случаи со сдвигом, альт, numpad и мобильными клавишами. 'keypress' делает его легким, как торт! – nirazul