estoy proporcionando una actualización ya que esta cuestión sigue apareciendo en la parte superior de resultados de búsqueda de google
Por MDN, KeyboardEvent.keyCode
y KeyBoardEvent.charCode
están en desuso y ya no se deben usar.
Las claves KeyboardEvent
se pueden determinar accediendo a las propiedades KeyboardEvent.key
, KeyboardEvent.code
y KeyboardEvent.location
según sea necesario.
KeyboardEvent.key
devuelve generalmente lo que se ve en un editor de texto para las claves de salida y el nombre en las teclas que no son de salida (incluido el uso de mayúsculas y minúsculas).
KeyboardEvent.code
devuelve una descripción de cadena de la clave.
KeyboardEvent.location
devuelve un número entero entre 0 y 3 para indicar el área del teclado en el que se encuentra la clave (estándar, izquierda, derecha y teclado numérico, respectivamente).
Understanding the difference entre estas propiedades puede ayudar a determinar cuál será el más apropiado para su situación dada. En el caso de esta pregunta: event.key
devolverá la misma salida ("Enter"
) para las teclas 'retorno de carro' y 'teclado numérico', mientras que event.code
devolverá "Enter"
y "NumpadEnter"
respectivamente.
En este caso, si desea diferenciar entre el teclado numérico y las teclas del teclado, puede usar event.code
. Si desea que su operación sea la misma, event.key
sería una mejor opción.
Si desea diferenciar entre otras teclas, como las teclas Ctrl
izquierda y derecha, también debería mirar la propiedad event.location
.
Voy a agregar un pequeño patio de juegos para ver la diferencia entre estas propiedades de eventos. Crédito para MDN para proporcionar the concept que sólo pequeñas modificaciones a continuación:
window.addEventListener("keydown", function(event) {
let str = "key = '" + event.key +
"'   code = '" + event.code + "'" +
"'   location = '" + event.location + "'" ;
let el = document.createElement("span");
el.innerHTML = str + "<br/>";
document.getElementById("output").appendChild(el);
}, true);
#output {
font-family: Arial, Helvetica, sans-serif;
overflow-y: auto;
margin-left: 4em
}
#output span {
line-height: 2em;
}
#output :nth-child(2n) {
color: blue;
}
<!-- Learn about this code on MDN: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code -->
<p>
Press keys on the keyboard to see what the KeyboardEvent's key and code values are for each one.
</p>
<div id="output"></div>