2011-06-10 14 views
14

¿Alguna idea de por qué esto podría suceder? ¿Normalmente pensaría que Chrome sería más indulgente con los códigos?evento de pulsación de tecla que no funciona en IE y Chrome, pero que funciona en FF

$(document).keypress(function(e) { 
    if(e.keyCode == 39) rightImage(); 
    if(e.keyCode == 37) leftImage(); 
}); 

Eso es lo que parece mi tecla de tecla. ¿Me estoy perdiendo de algo? rightImage(); y leftImage(); son funciones que deberían funcionar porque estoy usando esas funciones en otro lado también

¡Gracias por la ayuda!

+0

para mí, su código clave 39 es el -> '(comillas) –

+0

compruebe esto: http://jsfiddle.net/LmXaW/10/ –

+0

@RicardoArruda Está utilizando el evento de tecla pulsación, no la tecla. – Foreever

Respuesta

30

Cambio keypress a keydown:

$(document).keydown(function(e) { 
    if(e.keyCode == 39) rightImage(); 
    if(e.keyCode == 37) leftImage(); 
}); 

El evento keydown se produce cuando se pulsa la tecla, seguido inmediatamente por el evento de pulsación de tecla. Luego, el evento de teclado se genera cuando se libera la clave.

Con el fin de entender la diferencia entre keydown y pulsación de tecla, se es útil para entender la diferencia entre un "carácter" y una "clave" . Una "tecla" es un botón físico en el teclado de la computadora, mientras que un "carácter" es un símbolo escrito al presionar un botón. En teoría, los eventos de keydown y keyup representan teclas presionadas o liberadas, mientras que el evento keypress representa un carácter que se está escribiendo. La implementación de la teoría no es la misma en todos los navegadores.

+0

¡Gracias chicos! ¡Sí, la llave funciona! también gracias por la explicación! – hellomello

+0

Gracias ...... :) –

+0

El enlace se convirtió en una redirección a los anuncios en algún momento. – Ariane

2

encontrado la respuesta aquí: http://api.jquery.com/keypress/

"Si desea utilizar las flechas, borrar, teclas de retroceso en Chrome debe utilizar keydown pulsación prolongada en estas teclas sólo funcionan en Firefox y Opera.".

Su código no funcionaba para mí en iE8 (funcionó en FF), así que cambié la tecla presionada a la tecla. Funciona en IE ahora. No tienes Chrome aquí para probar.

Cuestiones relacionadas