Как преобразовать символ в соответствующий ключевой код?
Например:
-
a
to65
-
b
to66
-
c
to67
-
d
to68
Как преобразовать символ в соответствующий ключевой код?
Например:
a
to 65
b
to 66
c
to 67
d
to 68
Вы можете использовать функцию 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();">
Что вы подразумеваете под "keyCode"? Различные браузеры имеют разные значения keyCode
в событиях keyup
и keydown
, которые не обязательно будут соответствовать коду ASCII для соответствующего символа. Для буквенно-цифровых клавиш событие keypress
даст вам код ASCII в большинстве браузеров через свойства charCode
или which
. Эта страница полезна.
Обновление сентябрь 2015
Как отметил Ян в комментариях, keyCode
в конечном итоге будет заменен высшим свойством key
. Тем не менее, для этого пока еще не так много поддержки браузера.
Найдите диаграмму keycode/ascii, например этот, и поместите его в массив, такой как array ['char'] = keycode, Это утомительно, но код будет выполняться довольно быстро.
Как указано в комментариях: принятый ответ неверен, поскольку он дает код символа, а не 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>
Я искал это, когда наткнулся на этот вопрос. Я не думаю, что заметный ответ - правильный ответ. Для простых букв, 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.