Estoy usando un keypress
oyente, por ejemplo ...
addEventListener("keypress", function(event){
}
Sin embargo, esto no parece detectar un retroceso que borra el texto ...
¿Hay un oyente diferente que pueda usar para detectar esto?
javascript
keypress
addeventlistener
Skizit
fuente
fuente
keypress
eventos en muchos navegadores. Ver unixpapa.com/js/key.htmlIntenta en
keydown
lugar dekeypress
.Los eventos de teclado se producen en este orden:
keydown
,keyup
,keypress
El problema con el retroceso probablemente es que el navegador volverá a navegar
keyup
y, por lo tanto, su página no verá elkeypress
evento.fuente
keydown
keypress
keyup
. unixpapa.com/js/testkey.htmlkeyup
que se desencadena el evento.keydown
evento, pero el carácter no se elimina de la entrada hasta algún momento después de eso.El
keypress
evento puede ser diferente en todos los navegadores.Creé un Jsfiddle para comparar eventos de teclado (usando los atajos de JQuery) en Chrome y Firefox. Dependiendo del navegador que esté utilizando, un
keypress
evento se activará o no; la retroceso se activarákeydown/keypress/keyup
en Firefox pero solokeydown/keyup
en Chrome.Eventos de clics únicos activados
en Chrome
keydown/keypress/keyup
cuando el navegador registra una entrada de teclado (keypress
se activa)keydown/keyup
si no hay entrada de teclado (probado con alt, shift, retroceso, teclas de flecha)keydown
solo para tab?en Firefox
keydown/keypress/keyup
cuando el navegador registra una entrada de teclado pero también para retroceso, teclas de flecha, pestaña (por lo que aquíkeypress
se dispara incluso sin entrada)keydown/keyup
para alt, shiftEsto no debería ser sorprendente porque de acuerdo con https://api.jquery.com/keypress/ :
El uso del tipo de evento de pulsación de tecla está en desuso por W3C ( http://www.w3.org/TR/DOM-Level-3-Events/#event-type-keypress )
Finalmente, para responder a su pregunta, debe usar
keyup
okeydown
detectar un retroceso en Firefox y Chrome.Pruébalo aquí:
fuente
Algo que escribí en caso de que alguien encuentre un problema con las personas presionando la tecla de retroceso mientras piensan que están en un campo de formulario
fuente
Mi control numérico:
intentalo
El código de tecla de retroceso es 8
fuente
event.key === "Retroceso"
Más reciente y mucho más limpio: uso
event.key
. ¡No más códigos de números arbitrarios!Documentos de Mozilla
Navegadores Soportados
fuente
.key
Actualmente es la opción recomendada por los documentos. Además, admite varios teclados internacionales con diferentes asignaciones para cualquier tecla dada. No son arbitrarios en el sentido de que son fijos, pero lo son al leer el códigoUtilice uno de los eventos keyup / keydown / beforeinput en su lugar.
según esta referencia, la pulsación de tecla está en desuso y ya no se recomienda.
si usa "beforeinput", tenga cuidado con la compatibilidad del navegador . la diferencia entre "beforeinput" y los otros dos es que "beforeinput" se dispara cuando el valor de entrada está a punto de cambiar, por lo que con los caracteres que no pueden cambiar el valor de entrada, no se dispara (por ejemplo, shift, ctr, alt).
Tuve el mismo problema y al usar keyup se resolvió.
fuente