Je me demande ce que je fais de mal:
$(".s").keypress(function(e) {
switch (e.keyCode) {
case 8: // Backspace
//console.log('backspace');
case 9: // Tab
case 13: // Enter
case 37: // Left
case 38: // Up
case 39: // Right
case 40: // Down
break;
default:
doSearch();
}
});
Je veux que ma doSearch()
fonction soit également déclenchée lorsque j'appuie sur la Backspacetouche. Pour le moment, absolument rien ne se passe lorsque j'appuie sur BackspaceChrome et Safari.
des idées?
Réponses:
Utilisez à la
keyup
place dekeypress
. Cela obtient tous les codes de clé lorsque l'utilisateur appuie sur quelque chosela source
keyup
tirer pour Backspace alorskeypress
que non?keypress
pour laEnter
clé,keydown
pourBackspace
et ainsi de suite; sinon, vous constaterez que vos événements dans certains navigateurs ne fonctionnent pas vraiment comme prévu, en particulier lorsque vous souhaitez empêcher le comportement par défaut de la clé. Lorsque vous utilisez le mauvais, ce qui se passera soit votre événement n'est pas du tout capturé (comme c'est le cas pour Backspace), soit vous ne pouvez pas l'empêcher; car cela se produit déjà avant que votre code de gestion d'événements y parvienne.keyup
va briser le pavé numérique . Connaissez-vous une réponse qui permet de détecter correctement n'importe quelle touche sur un clavier complet?keydown
est la meilleure option pour toutes les clésJe suis tombé sur ça moi-même. Je l'ai utilisé,
.on
donc ça a l'air un peu différent mais j'ai fait ceci:Ajout de mon travail ici. J'avais besoin de supprimer ssn tapé par l'utilisateur, alors je l'ai fait dans jQuery
la source
Si vous souhaitez déclencher l'événement uniquement sur les modifications de votre entrée, utilisez:
la source
input
n'observe pas non plus les keyCodes. Cela ne fonctionnerait pas non plus.Selon la documentation jQuery pour .keypress (), il n'attrape pas les caractères non imprimables, donc le retour arrière ne fonctionnera pas à la pression d'une touche, mais il est pris dans le keydown et le keyup:
Dans certains cas, le keyup n'est pas souhaité ou a d'autres effets indésirables et le keydown est suffisant, donc une façon de gérer cela consiste à utiliser
keydown
pour capturer toutes les frappes, puis définir un délai d'expiration d'un court intervalle pour que la clé soit entrée, puis effectuer le traitement dans après.la source