Estoy usando un keypressoyente, 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

keypresseventos en muchos navegadores. Ver unixpapa.com/js/key.htmlIntenta en
keydownlugar dekeypress.Los eventos de teclado se producen en este orden:
keydown,keyup,keypressEl problema con el retroceso probablemente es que el navegador volverá a navegar
keyupy, por lo tanto, su página no verá elkeypressevento.fuente
keydownkeypresskeyup. unixpapa.com/js/testkey.htmlkeyupque se desencadena el evento.keydownevento, pero el carácter no se elimina de la entrada hasta algún momento después de eso.El
keypressevento 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
keypressevento se activará o no; la retroceso se activarákeydown/keypress/keyupen Firefox pero solokeydown/keyupen Chrome.Eventos de clics únicos activados
en Chrome
keydown/keypress/keyupcuando el navegador registra una entrada de teclado (keypressse activa)keydown/keyupsi no hay entrada de teclado (probado con alt, shift, retroceso, teclas de flecha)keydownsolo para tab?en Firefox
keydown/keypress/keyupcuando el navegador registra una entrada de teclado pero también para retroceso, teclas de flecha, pestaña (por lo que aquíkeypressse dispara incluso sin entrada)keydown/keyuppara 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
keyupokeydowndetectar 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
.keyActualmente 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