javascript - tag - código clave y código de carbono
title html css (6)
De acuerdo, aquí están las explicaciones.
e.keyCode - utilizado para obtener el número que representa la tecla en el teclado
e.charCode - un número que representa el carácter unicode de la tecla en el teclado
e.which - (jQuery específico) es una propiedad introducida en jQuery (DO no utilizar en javascript normal)
A continuación se muestra el fragmento de código para obtener el código de clave y el código de caracteres
<script>
// get key code
function getKey(event) {
event = event || window.event;
var keyCode = event.which || event.keyCode;
alert(keyCode);
}
// get char code
function getChar(event) {
event = event || window.event;
var keyCode = event.which || event.keyCode;
var typedChar = String.fromCharCode(keyCode);
alert(typedChar);
}
</script>
Ejemplo en vivo de Getting keyCode y charCode en JavaScript .
¿Por qué la gente escribe una declaración como
e.keyCode ? e.keyCode : e.charCode
Algunas personas también usan e.which
¿Podría alguien explicar por favor?
El event.which
propiedad que se agrega al usar jQuery para evitar diferencias en el navegador. Ver documentos .
La propiedad que no se definirá si no está utilizando jQuery.
Es una declaración condicional.
Si el navegador proporciona e.keyCode, tome e.keyCode else e.charCode.
Esto es similar a
var code = event.keyCode || event.charCode
event.keyCode : devuelve el valor Unicode de una clave que no es un carácter en un evento de pulsación de tecla o cualquier tecla en cualquier otro tipo de evento de teclado.
event.charCode : devuelve el valor Unicode de una tecla de carácter presionada durante un evento de pulsación de tecla.
Manejar los eventos clave consistentemente no es para nada fácil.
En primer lugar, hay dos tipos diferentes de códigos: códigos de teclado (un número que representa la tecla en el teclado que el usuario presionó) y códigos de caracteres (un número que representa un carácter Unicode). Solo puede obtener códigos de caracteres de manera confiable en el evento de keypress
. No intente obtener códigos de caracteres para los keyup
de keyup
y keydown
.
En segundo lugar, obtienes diferentes conjuntos de valores en un evento de keypress
a lo que obtienes en un evento de keyup
o keydown
.
Recomiendo esta página como un recurso útil. Como un resumen:
Si está interesado en detectar a un usuario escribiendo un carácter, use el evento de keypress
. IE extrañamente solo almacena el código de carácter en keyCode
mientras que todos los demás navegadores lo almacenan en el which
. Algunos (pero no todos) los navegadores también lo almacenan en charCode
y / o keyCode
. Un ejemplo de controlador de pulsaciones de teclas:
function(evt) {
evt = evt || window.event;
var charCode = evt.which || evt.keyCode;
var charStr = String.fromCharCode(charCode);
alert(charStr);
}
Si está interesado en detectar una clave no imprimible (como una tecla de cursor), use el evento de selección. Aquí keyCode
siempre es la propiedad de usar. Tenga en cuenta que los eventos de keyup
tienen las mismas propiedades.
function(evt) {
evt = evt || window.event;
var keyCode = evt.keyCode;
// Check for left arrow key
if (keyCode == 37) {
alert("Left arrow");
}
}
Yo (siendo personas yo mismo) escribí esta declaración porque quería detectar la tecla que el usuario escribió en el teclado en diferentes navegadores.
En Firefox, por ejemplo, los caracteres tienen> 0 código_carácter y 0 código clave, y las teclas como flechas y retroceso tienen> 0 código_clave y 0 código_carácter.
Sin embargo, usar esta declaración puede ser problemático ya que las "colisiones" son posibles. Por ejemplo, si desea distinguir entre las teclas Eliminar y Período, esto no funcionará, ya que Eliminar tiene claveCódigo = 46 y el Período tiene charCode = 46.
keyCode y que representan la tecla del teclado real presionada en forma de un valor numérico. La razón por la que ambos existen es que keyCode está disponible dentro de Internet Explorer y que está disponible en los navegadores W3C como Firefox.
charCode es similar, pero en este caso recuperas el valor Unicode del caracter presionado. Por ejemplo, la letra "A".
La expresión de JavaScript:
var keyCode = e.keyCode ? e.keyCode : e.charCode;
Básicamente dice lo siguiente:
Si existe la propiedad e.keyCode, configure keyCode variable a su valor. De lo contrario, establezca keyCode variable en el valor de la propiedad e.charCode.
Tenga en cuenta que la recuperación de las propiedades de código de clave o charCode generalmente implica descubrir las diferencias entre los modelos de eventos en IE y en W3C. Algunos implican escribir código como el siguiente:
/*
get the event object: either window.event for IE
or the parameter e for other browsers
*/
var evt = window.event ? window.event : e;
/*
get the numeric value of the key pressed: either
event.keyCode for IE for e.which for other browsers
*/
var keyCode = evt.keyCode ? evt.keyCode : e.which;
EDIT : correcciones a mi explicación de charCode según los comentarios de Tor Haugen.