Вы можете получить keycode, но не имя, потому что имена различаются в разных культурах, языках и т. Д., А JavaScript не предоставляет никаких средств для получения названия культуры и языка, соответствующего текущему культуры и языка.
Итак, ответ на вопрос: «Можно ли получить имя ключа при нажатии?» is: Не из чего-либо, встроенного в JavaScript или в браузер. Вам понадобятся таблицы поиска и/или библиотека. Остерегайтесь того, что разные раскладки клавиатуры могут давать разные сопоставления.
keypress
событие дает код символа для сопоставления символа, если есть один (на event.charCode
, который вы можете использовать как String.fromCharCode(event.charCode)
), но не keydown
, поскольку не все keydown
s генерируют символы (в отличии от других нажатий), и на самом деле для создания персонажа требуется более одного keydown
.
Чтобы получить код клавиши, просто используйте:
var keyCode = event.which || event.keyCode || 0;
Это будет использовать event.which
если он присутствует и truthy или event.keyCode
, если она присутствует и truthy или 0
если ни присутствует и truthy. Большинство браузеров используют which
; многие версии IE используют keyCode
.
Поскольку ключ «название», вероятно, включать модификаторы, я упомяну, что есть модифицирующие флаги доступны на мероприятии, а также: event.shiftKey
, event.ctrlKey
, event.altKey
и event.metaKey
.
Вы увидите людей, говорящих, что вы можете использовать String.fromCharCode(keyCode)
после выполнения вышеуказанного, чтобы получить символ для кода ключа. Это справедливо только для очень небольшого набора кодов клавиш, потому что коды клавиш не являются кодами символов. Между ними существует небольшое совпадение, поэтому люди думают, что вы можете это сделать. Например, если вы нажмете a на клавиатуре, на любой клавиатуре, которую я когда-либо слышал о String.fromCharCode(keyCode)
, вы получите "A"
(а затем вы можете использовать event.shiftKey
, чтобы решить, сделать ли это нижний регистр). Но он падает быстро, когда вы попадаете во что-либо за пределами 26 букв английского алфавита (и, вероятно, стандартных десяти цифр).
Возможный дубликат [Получить ключевое значение нажатой клавиши] (http://stackoverflow.com/questions/12689995/get-key-value-of-a-key-pressed) – Haymaker
Что такое 'field'? Можете ли вы показать свой HTML и достаточно своего JavaScript, чтобы мы могли видеть, что вы делаете и работаете? Где вы хотите, чтобы появилось имя ключа? –
Возможный дубликат [Получить значение символа из KeyCode в JavaScript ... затем обрезать] (http: // stackoverflow.com/questions/1772179/get-character-value-from-keycode-in-javascript-then-trim) – Rajesh