Как преобразовать символ в его код ключа? - PullRequest
34 голосов
/ 16 сентября 2009

Как я могу преобразовать символ в соответствующий ему код ключа?

Например:

  • a до 65
  • b до 66
  • c до 67
  • d до 68

Ответы [ 5 ]

35 голосов
/ 16 сентября 2009

Для этого можно использовать функцию charCodeAt.

Рабочий пример:

function showKeyCode () {
    var character = document.getElementById("character").value.substring(0, 1);
    var code = document.getElementById("character").value.charCodeAt(0);
    var msg = "The Key Code for the \"" + character + "\" character is " + code + ".";
    alert(msg);
}
<input type="text" id="character" size="15">
<input type="button" value="Show Key Code" onclick="showKeyCode();">
13 голосов
/ 16 сентября 2009

Что вы подразумеваете под "keyCode"? Различные браузеры имеют разные значения keyCode в событиях keyup и keydown, которые не обязательно будут соответствовать коду ASCII для соответствующего символа. Для буквенно-цифровых ключей событие keypress даст вам код ASCII в большинстве браузеров через свойства charCode или which. Эта страница полезна.

Обновление за сентябрь 2015 года

Как указал Ян в комментариях, keyCode будет в конечном итоге заменен на улучшенное свойство key. Тем не менее, браузер пока не поддерживает это.

2 голосов
/ 18 апреля 2018

Как указано в комментариях: принятый ответ не является правильным , потому что он дает код символа, а не код ключа, который может быть другим, например, 'a'.charCodeAt(0) == 97 при правильном коде ключа 65.

для преобразования только стандартных символов из [a-zA-Z] или чисел [0-9] можно использовать приведенный ниже код.

Однако этот не работает должным образом для каких-либо специальных клавиш , таких как ., Ö, # или чего бы то ни было, и я не нашел для них хорошего решения. В качестве обходного пути можно использовать сайт вроде http://keycode.info/ (который просто фиксирует события onkeydown и читает свойство event.keyCode).

function convertToKeyCode(target) {
    var keyCode = target.value.toUpperCase().charCodeAt(0);
    document.getElementById("keyCodeSpan").innerHTML = keyCode;
}
<input type="text" oninput="convertToKeyCode(this)" size="1" maxlength="1">
<span>Keycode: </span><span id="keyCodeSpan"></span>
2 голосов
/ 16 сентября 2009

Найдите код ключа / таблицу ascii, например , этот и поместите его в массив, такой что массив ['char'] = код ключа Это утомительно, но код будет выполняться довольно быстро.

1 голос
/ 29 июля 2018

Я искал это, когда наткнулся на этот вопрос. Я не думаю, что отмеченный ответ является правильным ответом. Для простых букв A-Za-z я использую следующее:

function getKeyCode(char) {
  var keyCode = char.charCodeAt(0);
  if(keyCode > 90) {  // 90 is keyCode for 'z'
    return keyCode - 32;
  }
  return keyCode;
}

Обратите внимание, что это работает только для символов A-Z и a-z.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...