whichAtributo de evento
Ejemplo
Obtener el valor Unicode de la tecla presionada:
xEl resultado es:
Pruébalo »
Este artículo contiene más ejemplos al final.
Definición y uso
El atributo which devuelveonkeypressel código de carácter del valor de la tecla que disparó el evento, oonkeydownoonkeyupel código de la tecla del evento.
La diferencia entre los dos tipos de código es:
- Código de carácter: un número que representa un carácter ASCII
- Código de teclado: un número que representa la tecla real en el teclado
Los valores de los dos tipos no son siempre iguales. Por ejemplo, la letra minúscula "w" y la mayúscula "W" tienen el mismo código de teclado, porque están en la misma tecla (el código de "W" es "87"), pero tienen códigos de carácter diferentes, y la salida de los dos caracteres no es la misma (los códigos de carácter de "w" y "W" son "119" y "87"). Consulta los siguientes ejemplos para entenderlo mejor.
Consejo:Si necesitas saber si el usuario presionó una tecla de impresión (como "a" o "5"), se recomienda usar el evento onkeypress. Si necesitas saber si el usuario presionó una tecla de función (como "F1", "CAPS LOCK" o "Home"), puedes usar los eventos onkeydown u onkeyup.
Nota:IE8 y versiones anteriores no admiten el atributo which. Los navegadores que no lo admiten pueden usarkeyCodeel atributo. Sin embargo, el atributo keyCode no es válido en el evento onkeypress del navegador Firefox. Para compatibilidad con estos navegadores, puedes usar el siguiente código:
Consejo:La lista completa de caracteres Unicode se puede consultar en nuestroManual de referencia completo de Unicode。
Consejo:Si necesitas convertir un valor Unicode a un carácter, puedes usarfromCharCode()el método.
Nota:Esta propiedad es de solo lectura.
Nota:Las propiedades which y keyCode ofrecen una forma de resolver la compatibilidad entre navegadores. Las versiones más recientes de DOM Events recomiendan usarkeyel atributo en lugar de este método.
Consejo:Si deseas verificar si se presionó la tecla "ALT", "CTRL", "META" o "SHIFT", puedes usaraltKey, ctrlKey, metaKeyoshiftKeyel atributo.
Compatibilidad del navegador
Los números en la tabla indican la versión del primer navegador que admite esta propiedad.
| Atributo | |||||
|---|---|---|---|---|---|
| which | Yes | 9.0 | Yes | Yes | Yes |
Sintaxis
Detalles técnicos
| Valor de retorno: | Un número que representa el código de carácter Unicode o el código de tecla Unicode. |
|---|---|
| Versión de DOM: | DOM Level 2 Events |
Más ejemplos
Ejemplo
Usa onkeypress y onkeydown para demostrar la diferencia entre el código de carácter y el código de teclado:
function uniCharCode(event) {
var char = event.which || event.keyCode; // event.keyCode se usa para IE8 y versiones anteriores
document.getElementById("demo").innerHTML = "Unicode CHARACTER code: " + char;
}
function uniKeyCode(event) {
var key = event.which || event.keyCode; // event.keyCode se usa para IE8 y versiones anteriores
document.getElementById("demo2").innerHTML = "Unicode KEY code: " + key;
}
Cuando se presiona la tecla "a" (sin Bloq Mayús), el resultado es el siguiente:
Código de teclado Unicode: 65
Pruébalo »
Ejemplo
Si se presiona la tecla Esc, se muestra un mensaje:
function myFunction(event) {
var x = event.which || event.keyCode; // event.keyCode se usa para IE8 y versiones anteriores
if (x == 27) { // 27 es la tecla ESC
alert ("You pressed the Escape key!");
}
}
Pruébalo »
Ejemplo
Convierte un valor Unicode a un carácter (no funciona para teclas de función):
var y = String.fromCharCode(x); // Convertir el valor a carácter
Pruébalo »
Páginas relacionadas
Manual de referencia de HTML DOM:Atributo de evento key
Manual de referencia de HTML DOM:Atributo de evento keyCode
Manual de referencia de HTML DOM:Atributo de evento charCode
Otras extensiones
Objeto de evento