J'ai la fonction suivante:
$(document).ready(function() {
$("#dSuggest").keypress(function() {
var dInput = $('input:text[name=dSuggest]').val();
console.log(dInput);
$(".dDimension:contains('" + dInput + "')").css("display","block");
});
});
Pour une raison quelconque, pour la première pression sur une touche, j'obtiens une chaîne vide dans le journal de la console.
jquery
jquery-events
Ou Weinberger
la source
la source
input
type d'événement.Réalisant qu'il s'agit d'un article assez ancien, je vais quand même fournir une réponse car je luttais avec le même problème.
Vous devez utiliser l'
"input"
événement à la place et vous inscrire avec la.on
méthode. C'est rapide - sans le décalagekeyup
et résout le dernier problème de pression de touche que vous décrivez.Démo ici
la source
Utilisez
.keyup
au lieu d'appuyer sur une touche.Utilisez également
$(this).val()
ou simplementthis.value
pour accéder à la valeur d'entrée actuelle.DÉMO ici
Informations sur les
.keypress
documents jQuery,la source
keyup
est trop lent, et une touche peut être maintenue enfoncée sans être relâchée et des choses doivent se passer. mieux utiliserkeydown
avec un peu de temps pour que la valeur change réellement.Vous devez interrompre le thread d'exécution pour permettre la mise à jour de l'entrée.
la source
keyup
le délai est trop lent à certaines fins et ne filtre pas automatiquement les touches de modification. Cela fonctionne mieux pour moi.Cela est dû au fait que l'
Keypress
événement est déclenché avant l'ajout du nouveau personnage. Utilisez plutôt l'événement 'keyup', qui fonctionnera parfaitement dans votre situation.Je veux ajouter à cela, si vous avez plusieurs zones de texte et que vous devez faire la même chose sur leur événement keyup, vous pouvez simplement leur donner une classe css commune (par exemple commoncss) et appliquer un événement keyup comme celui-ci.
cela réduira considérablement votre code car vous n'avez pas à appliquer l'événement keyup par id pour chaque zone de texte.
la source
Je cherchais un exemple ES6 (pour qu'il puisse passer mon linter) donc pour d'autres personnes qui recherchent le même:
J'utiliserais également keyup car vous obtenez la valeur actuelle qui est remplie.
la source
Utilisez simplement un délai pour passer votre appel; le timeout sera appelé lorsque la pile d'événements sera terminée (c'est-à-dire après l'appel de l'événement par défaut)
la source
Je pense que ce dont vous avez besoin est le prototype ci-dessous
la source
jQuery obtient la valeur d'entrée après avoir appuyé sur une touche
https://www.tutsmake.com/jquery-keypress-event-detect-enter-key-pressed/
la source