Свойство which события KeyboardEvent

Определение и использование

which свойство возвращает инициировавшее Событие onkeypress Unicode код символа клавиши, или событие, которое его инициировало onkeydown или onkeyup Unicode код клавиши, который вызвал событие

Разница между двумя типами кодов:

  • Код символа - это числовой код ASCII символа
  • Код клавиши - это числовой код фактической клавиши на клавиатуре

Эти типы не всегда означают одно и то же. Например, клавиша "w" в нижнем регистре и "W" в верхнем регистре имеют одинаковый код клавиатуры,因为在 клавиатуре нажата одна и та же клавиша ("W" = числовой "87"), но код символа разный, так как resulting символ разный ("w" или "W", то есть "119" или "87") - пожалуйста, посмотрите на следующие примеры, чтобы лучше понять это.

Совет:Чтобы узнать, нажал ли пользователь клавишу, которую можно напечатать (например, "a" или "5"), рекомендуется использовать этот атрибут в событии onkeypress. Чтобы узнать, нажал ли пользователь функциональную клавишу (например, "F1", "CAPS LOCK" или "Home"), используйте события onkeydown или onkeyup.

Комментарий:IE8 и более ранние версии не поддерживают атрибут which. Для этих версий браузера можно использовать атрибут keyCode. Однако, атрибут keyCode не действует для события onkeypress в Firefox. Для решения проблемы кросс-браузерной совместимости можно использовать следующий код: }}

var x = event.which || event.keyCode;  // Использование which или keyCode зависит от поддержки браузером

Совет:Для списка всех Unicode символов обратитесь к нашему Полное руководство по Unicode.

Совет:Если нужно преобразовать значение Unicode в символ, используйте Метод fromCharCode().

Комментарий:Этот атрибут только для чтения.

Комментарий:keyCode и which свойства предоставлены только для совместимости. 最新ная версия спецификации DOM событий рекомендует использовать свойство key (если доступно).

Совет:Если вы хотите узнать, были ли нажаты клавиши "ALT", "CTRL", "META" или "SHIFT" во время события клавиши, используйте altKeyиctrlKeyиmetaKey или shiftKey Свойства.

Пример

Получение значения Unicode для нажатой клавиши:

var x = event.which;

Ниже страницы есть более примеров TIY.

Попробуйте сами

Синтаксис

event.which

Технические детали

Возвратное значение: Числовое значение, представляющее Unicode код символа или Unicode код клавиатуры.
Версия DOM: DOM Level 2 Events

Поддержка браузерами

Числа в таблице указывают на первую версию браузера, которая полностью поддерживает это свойство.

Свойства Chrome IE Firefox Safari Opera
which Поддержка 9.0 Поддержка Поддержка Поддержка

Более примеров

Пример

Использование onkeypress и onkeydown для демонстрации различий между кодами символов и кодами клавиатуры:

<input type="text" onkeypress="uniCharCode(event)" onkeydown="uniKeyCode(event)"> 
function uniCharCode(event) {
  var char = event.which || event.keyCode; // event.keyCode используется в IE8 и более ранних версиях
  document.getElementById("demo").innerHTML = "Код символа Unicode: " + char;
}
function uniKeyCode(event) {
  var key = event.which || event.keyCode; // event.keyCode используется в IE8 и более ранних версиях
  document.getElementById("demo2").innerHTML = "Код Unicode: " + key;
}

Если нажать клавишу "a" на клавиатуре (не используя Capslock), результаты char и key будут:

Код символа Unicode: 97
Код Unicode: 65

Попробуйте сами

Пример

Если пользователь нажал клавишу Escape, то появится текстовое сообщение:

<input type="text" onkeydown="myFunction(event)"> 
function myFunction(event) {
  var x = event.which || event.keyCode; // event.keyCode используется в IE8 и более ранних версиях
  if (x == 27) {  // 27 - это клавиша ESC
    alert("Вы нажали клавишу Escape!");
  }
}

Попробуйте сами

Пример

Преобразование значения Unicode в символ (не подходит для функциональных клавиш):

var x = event.which || event.keyCode;   // Получение значения Unicode
var y = String.fromCharCode(x);         // Преобразование значения в символ

Попробуйте сами

Соответствующие страницы

Руководство по HTML DOM:Атрибут key в KeyboardEvent

Руководство по HTML DOM:Атрибут keyCode в KeyboardEvent

Руководство по HTML DOM:Атрибут charCode в KeyboardEvent