que fue víctima de un Firefox keydown comportamiento en que al presionar la tecla enter (de hecho cualquier tecla) sin tener foco en un campo específico no se disparará un evento keydown lo hará único desencadenante un evento keypress.event.keyCode vs event.which
Esto podría ser muy confuso, ya que el uso de eventos keydown y keyup JavaScript códigos de teclas mientras que pulsación de tecla utiliza códigos ASCII. Afortunadamente 13 (entrar/regresar) es común a ambos.
¿Hay algún motivo conocido por el que FF utilice la tecla presionando en esta circunstancia? ¿Cuál es el beneficio?
Una vez que esto se estableció IE8 vomitó un tonto, ya que no permite preventDefault exigiendo en su lugar returnValue = false
el siguiente fragmento de otro SO posterior ha demostrado ser muy útil:
event.preventDefault ? event.preventDefault() : event.returnValue = false;
Durante la búsqueda de resolver estos problemas que me han confundido consistentemente por event.keycode
vs event.which
. A saber que estoy haciendo mal uso de una sentencia switch 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 la 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 que yo sepa que es la mejor manera de aplicar.
Muchas gracias.
Usted sabe que jQuery normaliza las diferencias entre los navegadores? En jQuery, se espera que 'event.which' sea coherente en todos los navegadores. Además, 'event.preventDefsult();' de jQuery también funcionará en OldIE. –
@Rob W, hola Rob sí, de hecho, estaba al tanto de esto. La documentación en línea de jquery documenta el uso del evento que he usado. Muchas publicaciones muestran que aquí no se usa el código clave. De ahí la pregunta. Entiendo que event.preventDefsult(); debería funcionar en todas partes. – codepuppy
¿Se pregunta si podemos obtener una actualización sobre esto para navegadores relevantes en 2016? – Faust