w3schools event create change javascript jquery javascript-events event-handling

javascript - event - jquery methods



event.keycode vs event.which (2)

Algunos navegadores usan keyCode y otros usan which . Pero con jQuery esto está normalizado, así que no tienes que pensar en eso. Usted puede simplemente elegir el que prefiera.

Me encontré con un comportamiento de teclado de Firefox en el que presionar la tecla Intro (de hecho cualquier tecla) sin tener foco en un campo específico NO desencadenará un evento de pulsación de tecla que solo desencadenará un evento de pulsación de tecla .

Esto podría ser muy confuso ya que el evento keydown y keyup usa códigos de clave JavaScript, mientras que la tecla usa códigos ASCII. Afortunadamente 13 (entrar / regresar) es común a ambos.

¿Hay alguna razón conocida por la que FF usa la tecla presion en esta circunstancia? ¿Cuál es el beneficio?

Una vez que esto se estableció, IE8 arrojó una tontería en el sentido de que no permite prevenir. Predeterminadamente exige en cambio returnValue = false El siguiente fragmento de otra publicación de SO ha demostrado ser muy útil:

event.preventDefault ? event.preventDefault() : event.returnValue = false;

Durante la búsqueda para resolver estos problemas, fui confundido constantemente por event.keycode vs event.which . A saber, estoy haciendo mal usando una declaración de cambio similar a:

$("#class_Name").bind("keydown", function(event){ // do not test input if field controls used switch(event.which){ case 13: //enter key event.preventDefault ? event.preventDefault() : event.returnValue = false; break; }


Es el siguiente mejor, si es así, ¿por qué?

$("body").keypress(function(event){ // stop inadvertant form submission if (event.keycode == "13"){ event.preventDefault ? event.preventDefault() : event.returnValue = false; } });


Me gustaría saber para saber cuál es la mejor aplicación.

Muchas gracias.


De acuerdo con este comentario, jQuery puede no ser confiable y esta página dice:

event.which no está definido en IE <9 en keydown y keyup .

event.keyCode es 0 en Gecko (Seamonkey, Firefox) al keypress teclas para devolver un caracter.

event.charCode solo es compatible con keydown y keyup con Internet Explorer (Mac).

Pruébalo en JSFiddle