teclado funciona eventos event entre diferencia como javascript keyboard

javascript - funciona - js event keyup



pulsación de tecla y keyup-¿por qué es diferente el código de clave? (3)

Bueno, me topé con una diferencia cuando intentaba copiar la entrada del usuario de una entrada del formulario a otra parte del formulario, que había bloqueado para que los usuarios la editaran. Lo que descubrí fue que cada vez que un usuario se movía a la siguiente etiqueta con la tecla al completar la entrada, se perdía una última entrada del teclado en la entrada copiada cuando usaba EventListener para presionar teclas y esto se resolvía con el uso de keyup.

Entonces, en conclusión, Keypress escucha el estado en el instante en que se presionó la tecla, dejando de lado el resultado de la pulsación de tecla , mientras que keyup escucha el estado del sistema después de presionar la tecla e incluye el resultado de la pulsación de tecla.

Relacionados: JavaScript KeyCode vs CharCode

Aquí hay algunos códigos que puedes probar en casa o en un jsfiddle :

el.addEventListener( ''keyup'', function( e ) { console.log( ''Keyup event'' ); console.log( e.keyCode ); } ); el.addEventListener( ''keypress'', function( e ) { console.log( ''Keypress event'' ); console.log( e.keyCode ); } );

¿Por qué el keyCode es diferente?

Puedo entender por qué uno debería usar solo la pulsación de tecla, pero lo que no entiendo es cómo dos eventos clave, dados la misma tecla de pulsación en el teclado, dan códigos clave diferentes.

PD: no me preocupa la compatibilidad con los navegadores antiguos, probé esto en Chrome y me sorprendió, y no pude encontrar una explicación.



Los eventos son para propósitos completamente diferentes. Use keyup y keydown para identificar las teclas físicas y keydown la keypress para identificar los caracteres escritos. Los dos son tareas fundamentalmente diferentes con diferentes eventos; no intentes mezclar los dos. En particular, keyCode en eventos de keypress de keypress suele ser redundante y no debe usarse (excepto en IE anteriores, pero consulte el documento vinculado a continuación para obtener más información); para las pulsaciones de tecla imprimibles es generalmente la misma que la which charCode , aunque hay algunas variaciones entre los navegadores.

El artículo de Jan Wolter sobre eventos clave , ya vinculado en otra respuesta, es la palabra definitiva sobre este tema para mí y tiene tablas que describen qué devuelve cada una de las diferentes propiedades para cada tipo de evento clave y cada navegador.