2016-06-09 3 views
3

Можно ли получить имя ключа при нажатии:Javascript - Печать имени ключа при его нажатии?

field.addEventListener("keydown", keyDown, false); 
function keyDown(event) { 
    ... 
} 

Например, при нажатии клавиши пробела, я хотел бы получить строковое значение: «пространство», или что-то вдоль этих линий , Есть ли простой способ сделать это или мне нужна библиотека.

+0

Возможный дубликат [Получить ключевое значение нажатой клавиши] (http://stackoverflow.com/questions/12689995/get-key-value-of-a-key-pressed) – Haymaker

+0

Что такое 'field'? Можете ли вы показать свой HTML и достаточно своего JavaScript, чтобы мы могли видеть, что вы делаете и работаете? Где вы хотите, чтобы появилось имя ключа? –

+0

Возможный дубликат [Получить значение символа из KeyCode в JavaScript ... затем обрезать] (http: // stackoverflow.com/questions/1772179/get-character-value-from-keycode-in-javascript-then-trim) – Rajesh

ответ

6

Вы можете получить 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 букв английского алфавита (и, вероятно, стандартных десяти цифр).

+0

Я думаю, мы можем получить значения клавиатуры из 'String.fromCharCode()'. Проблема заключается в том, что она вернет одинаковое значение для 'a' и' A' – Rajesh

+0

@Rajesh: коды клавиш не являются кодами символов. Так что это сработает для некоторых, но не для всех. –

+0

Я не ищу ключевой код. Поэтому я предполагаю, что мне придется использовать библиотеку для этого – user3024235

1

Вы можете использовать this file и найти имя персонажа. Это то, что вы хотите?

Смежные вопросы