2011-10-25 12 views
5
$(document).keydown(function (event) 
    { 
    alert(event.which); 
    }); 

Para la clave de punto y coma, ;, esto da 59 en Firefox y 186 en Chrome. Sin embargo, desde la página de referencia jQuery para el evento keydown, diceTratando de averiguar si hay un error en jQuery o si es algo que estoy haciendo

"Mientras que los navegadores usan propiedades diferentes para almacenar esta información, jQuery normaliza la propiedad .which para que pueda usarla de manera confiable para recuperar el código clave. Este código corresponde a una tecla del teclado, incluidos códigos para teclas especiales, como flechas ".

¿Echo de menos algo?

Respuesta

4

La propiedad which es una "ventanilla única" para la cual se presionó la tecla, lo que le permite ignorar las diferencias entre las propiedades keyCode y charCode. Esa es la "normalización" que proporciona jQuery.

La diferencia en el valor de which se reduce a la diferencia entre la forma en que los distintos navegadores proporcionan la información, por lo que deberá escribir código para manejar los diferentes valores que se devuelven. Hay a few references a este comportamiento en línea.

+0

¡Bien, gracias! Parece que deberían aclarar la página de documentación. – Nick

0

No sé sobre jQuery, pero sugiero seguir con los eventos de pulsación de tecla para escribir claves y solo usar eventos de tecla para teclas especiales como flechas.

+0

Lamentablemente, esto no es portátil. Ver: https://twitter.com/jezenthomas/status/624174305685958656 –

+0

@JezenThomas No estoy seguro de lo que está tratando de agregar allí; su tabla no analiza los eventos de keydown y acepta que los eventos de pulsación de teclas funcionan para escribir claves. – Neil

+0

El evento de pulsación de tecla no siempre se activa, según la clave y según el navegador. Tenemos que usar la tecla presion, pero generalmente junto con la tecla y la tecla dependiendo de la tecla que está esperando. –

0

Aquí es la totalidad de la "normalización" que hace jQuery:

if (event.which == null) { 
    event.which = original.charCode != null ? original.charCode : original.keyCode; 
} 

Parece que sólo se pone keyCode si charCode no existe. Y charCode solo se usa si event.which aún no existe. No cambia los números para hacerlos consistentes.

Cuestiones relacionadas