Числа, возвращаемые из сопоставления кода ключа в следующий набор, как определено здесь . Этот набор не соответствует ASCII, но похож в некоторых отношениях. Я посмотрю и смогу найти дополнительную информацию о том, как получить символы из чисел.
Также я рекомендую использовать e.which
вместо e.keyCode
И, как дальнейший комментарий, никогда не доверяйте w3schools.
Взгляните на e.originalEvent.keyIdentifier
, похоже, он содержит какой-то юникод. Но он все равно отображает цифровую клавиатуру в A-H вместо 0-9. Я думаю, что это просто ненавидит numpad. Где-то должен быть логический флаг isnumpad. DOM3 API имеет логический номер.
Получается e.originalEvent.keyLocation === 3
, когда вы нажимаете 1 на цифровой клавиатуре.
Из W3 spec
KeyboardEvent.DOM_KEY_LOCATION_STANDARD
Значение константы KeyboardEvent.DOM_KEY_LOCATION_STANDARD равно 0x00.
KeyboardEvent.DOM_KEY_LOCATION_LEFT
Значение константы KeyboardEvent.DOM_KEY_LOCATION_LEFT равно 0x01.
KeyboardEvent.DOM_KEY_LOCATION_RIGHT
Значение константы KeyboardEvent.DOM_KEY_LOCATION_RIGHT равно 0x02.
KeyboardEvent.DOM_KEY_LOCATION_NUMPAD
Значение константы KeyboardEvent.DOM_KEY_LOCATION_NUMPAD равно 0x03
Таким образом, расположение клавиш === 3 отображается на DOM_KEY_LOCATION_NUMPAD. Тогда вам придется ловить цифровую клавиатуру вручную. Вы можете вычесть 48 из кода клавиши для цифровой клавиатуры, чтобы отобразить A-H на 0-9
[Большой отказ от ответственности]
Это то, что делают FF & Chrome. Бог знает, что делает IE, вы можете победить этого зверя самостоятельно. Я не сомневаюсь, что это делает что-то совершенно отличное от спецификации W3.