J'utilise un keypress
auditeur par exemple ..
addEventListener("keypress", function(event){
}
Cependant, cela ne semble pas détecter un retour arrière qui efface le texte ...
Puis-je utiliser un autre auditeur pour détecter cela?
J'utilise un keypress
auditeur par exemple ..
addEventListener("keypress", function(event){
}
Cependant, cela ne semble pas détecter un retour arrière qui efface le texte ...
Puis-je utiliser un autre auditeur pour détecter cela?
KeyPress est appelé événement uniquement pour les clés caractères (imprimables), événement KeyDown est élevé pour tous , y compris par exemple non imprimable Control, Shift, Alt, BackSpace, etc.
METTRE À JOUR:
L'événement keypress est déclenché lorsqu'une touche est enfoncée et que cette touche produit normalement une valeur de caractère
keypress
événements dans de nombreux navigateurs. Voir unixpapa.com/js/key.htmlEssayez
keydown
au lieu dekeypress
.Les événements de clavier se produisent dans cet ordre:
keydown
,keyup
,keypress
Le problème avec le retour arrière est probablement que le navigateur reviendra
keyup
et que votre page ne verra donc pas l'keypress
événement.la source
keydown
keypress
keyup
. unixpapa.com/js/testkey.htmlkeyup
événement n'est pas déclenché.keydown
événement, mais le caractère n'est supprimé de l'entrée que quelque temps après.L'
keypress
événement peut être différent d'un navigateur à l'autre.J'ai créé un Jsfiddle pour comparer les événements du clavier (en utilisant les raccourcis JQuery) sur Chrome et Firefox. Selon le navigateur que vous utilisez, un
keypress
événement sera déclenché ou non - le retour arrière se déclencherakeydown/keypress/keyup
sur Firefox mais uniquementkeydown/keyup
sur Chrome.Événements de clic unique déclenchés
sur Chrome
keydown/keypress/keyup
lorsque le navigateur enregistre une entrée clavier (keypress
est déclenché)keydown/keyup
si aucune saisie au clavier (testé avec alt, shift, backspace, touches fléchées)keydown
seulement pour l'onglet?sur Firefox
keydown/keypress/keyup
lorsque le navigateur enregistre une entrée au clavier mais aussi pour le retour arrière, les touches fléchées, l'onglet (donc icikeypress
est déclenché même sans entrée)keydown/keyup
pour alt, shiftCela ne devrait pas être surprenant car selon https://api.jquery.com/keypress/ :
L'utilisation du type d'événement keypress est déconseillée par le W3C ( http://www.w3.org/TR/DOM-Level-3-Events/#event-type-keypress )
Enfin, pour répondre à votre question, vous devez utiliser
keyup
oukeydown
pour détecter un retour arrière sur Firefox et Chrome.Essayez-le ici:
la source
Quelque chose que j'ai écrit au cas où quelqu'un rencontre un problème avec des personnes qui frappent en arrière tout en pensant qu'elles sont dans un champ de formulaire
la source
Ma commande numérique:
l'essayer
Le code de la touche BackSpace est 8
la source
event.key === "Retour arrière"
Plus récent et beaucoup plus propre: utilisation
event.key
. Fini les codes numériques arbitraires!Documents Mozilla
Navigateurs pris en charge
la source
.key
est actuellement l'option recommandée par la documentation. De plus, il prend en charge divers claviers internationaux avec différents mappages pour une touche donnée. Ils ne sont pas arbitraires dans le sens où ils sont fixes, mais ils le sont lors de la lecture de codeUtilisez à la place l'un des événements keyup / keydown / beforeinput.
sur la base de cette référence, la pression de touche est obsolète et n'est plus recommandée.
si vous utilisez "beforeinput", faites attention à sa compatibilité avec le navigateur . la différence entre "beforeinput" et les deux autres est que "beforeinput" est déclenché lorsque la valeur d'entrée est sur le point de changer, donc avec des caractères qui ne peuvent pas changer la valeur d'entrée, il n'est pas déclenché (par exemple shift, ctr, alt).
J'ai eu le même problème et en utilisant keyup, il a été résolu.
la source