2016-01-13 3 views
0

Ниже код принимает символ и печатает символ с помощью keycode (String.fromCharCode). Проблема возникает, когда вы вводите специальный символ, например . или ?.String.fromCharCode проблема для специальных символов в javascript

function logChar(e){ 
 
    var keyCode = e.which || e.keyCode; 
 
    var char = String.fromCharCode(keyCode); 
 
    console.log(char) 
 
}
<input type="text" onkeydown="logChar(event)" />

Может кто-нибудь объяснить, почему это возвращение другое значение и как получить такое же значение?

Заранее благодарен!

+2

триггеры onkeydown один раз, когда вы нажимаете shift (со значением 16) и отдельно для другого ключа, значение которого не зависит от того, нажимаете ли вы сдвиг или нет. – James

+0

@James Ваша точка верна, но даже если вы не нажимаете 'shift', просто нажмите' .' (точка), но вы не получите правильный символ. Я думаю, что ответ Балаха объясняет, почему. – Rajesh

ответ

3

Это потому, что keyCode и charCode отличаются. String.fromCharCode предполагает, что вход является unicode (поэтому A равно 65), а для буквенных и цифровых клавиш они будут соответствовать ... вроде. Вы заметите, что «a» и «A» в качестве ключевого кода выдаются как 65, но «a» - 97! Так что keyCode - это всего лишь идентификатор фактического ключа на клавиатуре, который вы нажимаете и не являетесь юникодом.

Вот почему цифра 0-9 дает разные коды. Если вы хотите сопоставить нажатия клавиш, используйте сайт, например this. Но обратите внимание, что вы больше никогда не получите точного персонажа.

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