Подтвердить что ты не робот

Как преобразовать char в его ключевой код?

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

Например:

  • a to 65
  • b to 66
  • c to 67
  • d to 68
4b9b3361

Ответ 1

Вы можете использовать функцию 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();">

Ответ 2

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

Обновление сентябрь 2015

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

Ответ 3

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

Ответ 4

Как указано в комментариях: принятый ответ неверен, поскольку он дает код символа, а не keyCode, который может быть другим, например, '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>

Ответ 5

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

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

Обратите внимание, что это предназначено для работы только для символов AZ и az.