Propiedad "which" de "KeyboardEvent"

Definición y uso

La propiedad "which" devuelve el desencadenador Evento onkeypress Código de carácter Unicode del tecla, o desencadenar onkeydown o onkeyup Código de tecla Unicode del tecla del evento

Diferencias entre los dos tipos de códigos:

  • Código de carácter - representa el número del carácter ASCII
  • Código de tecla - representa el número real de la tecla en el teclado

Este tipo no siempre significa lo mismo. Por ejemplo, las teclas en minúscula "w" y en mayúscula "W" tienen el mismo código de teclado, ya que la tecla pulsada es la misma ("W" = número "87"), pero el código de carácter es diferente, ya que el carácter resultante es diferente ("w" o "W", es decir, "119" o "87"). - Consulte los ejemplos a continuación para comprender mejor esto.

Consejo:Si desea saber si el usuario ha pulsado una tecla imprimible (por ejemplo, "a" o "5"), recomienda usar esta propiedad en el evento onkeypress. Para saber si el usuario ha pulsado una tecla de función (por ejemplo, "F1", "CAPS LOCK" o "Home"), utilice los eventos onkeydown o onkeyup.

Comentario:Las versiones de IE8 y anteriores no admiten el atributo which. Para estas versiones de navegador, puede usar la propiedad keyCode. Sin embargo, la propiedad keyCode no funciona en eventos onkeypress de Firefox. Para una solución multi-navegador, puede usar el siguiente código:

var x = event.which || event.keyCode;  // Use which o keyCode, dependiendo del soporte del navegador

Consejo:Para obtener una lista de todos los caracteres Unicode, consulte nuestra Referencia completa de Unicode.

Consejo:Si desea convertir un valor Unicode en un carácter, utilice Método fromCharCode().

Comentario:Esta propiedad es de solo lectura.

Comentario:Se proporcionan las propiedades keyCode y which solo por compatibilidad. La versión más reciente de la especificación de eventos DOM sugiere usar la propiedad key (si está disponible).

Consejo:Si desea saber si se pulsó la tecla "ALT", "CTRL", "META" o "SHIFT" en el momento del evento de pulsación de tecla, utilice altKeyctrlKeymetaKey o shiftKey Atributo.

Ejemplo

Obtener el valor Unicode de la tecla pulsada:

var x = event.which;

En la parte inferior de la página hay más ejemplos de TIY.

Prueba por ti mismo

Sintaxis

event.which

Detalles técnicos

Valor devuelto: Valor numérico, que representa el código de carácter Unicode o el código de teclado Unicode.
Versión del DOM: DOM Level 2 Events

Soporte del navegador

Los números en la tabla indican la versión del navegador que primero admite completamente el atributo.

Atributo Chrome IE Firefox Safari Opera
which Soporte 9.0 Soporte Soporte Soporte

Más ejemplos

Ejemplo

Se utiliza onkeypress y onkeydown para mostrar la diferencia entre los códigos de caracteres y los códigos de teclado:

<input type="text" onkeypress="uniCharCode(event)" onkeydown="uniKeyCode(event)"> 
function uniCharCode(event) {
  var char = event.which || event.keyCode; // event.keyCode se utiliza en IE8 y versiones anteriores
  document.getElementById("demo").innerHTML = "Código de CARACTER Unicode: " + char;
}
function uniKeyCode(event) {
  var key = event.which || event.keyCode; // event.keyCode se utiliza en IE8 y versiones anteriores
  document.getElementById("demo2").innerHTML = "Código de KEY Unicode: " + key;
}

Al presionar la tecla "a" en el teclado (sin usar Capslock), los resultados de char y key serán:

Código de CARACTER Unicode: 97
Código de KEY Unicode: 65

Prueba por ti mismo

Ejemplo

Si el usuario presiona la tecla Escape, se mostrará algún texto:

<input type="text" onkeydown="myFunction(event)"> 
function myFunction(event) {
  var x = event.which || event.keyCode; // event.keyCode se utiliza en IE8 y versiones anteriores
  if (x == 27) {  // 27 es la tecla ESC
    alert("¡Has presionado la tecla de Escape!");
  }
}

Prueba por ti mismo

Ejemplo

Convertir el valor Unicode en un carácter (no se aplica a los atajos de teclado):

var x = event.which || event.keyCode;   // Obtener el valor Unicode
var y = String.fromCharCode(x);         // Convertir el valor en un carácter

Prueba por ti mismo

Páginas relacionadas

Manual de referencia HTML DOM:Atributo key de KeyboardEvent

Manual de referencia HTML DOM:Atributo keyCode de KeyboardEvent

Manual de referencia HTML DOM:Atributo charCode de KeyboardEvent