web-dev-qa-db-fra.com

jquery keypress () event obtenir le texte

Je veux qu'une fonction soit exécutée lorsqu'une pression sur une touche se produit dans une zone de texte, j'ai donc ce code:

$("input[x]").keypress(function() {
        DoX();
    })

Cela fonctionne bien, mais dans ma fonction, je veux faire quelque chose basé sur la valeur de texte dans la zone de texte

var textValue = ("input[x]").val();

Maintenant, le problème est qu’il est en retard par rapport à une clé. Par conséquent, si ma zone de texte indique "Il" et que je tape "l", je veux que ma textValue soit "Hel", mais elle renvoie la valeur précédente "He". parce que vraisemblablement, le caractère n'a pas encore été placé dans la zone de texte.

Y at-il un moyen de sortir 'Hel' de ma fonction ici?

Merci :)

Vous pouvez essayer d'utiliser l'événement keyup:

$(selector).keyup(function() {
  var textValue = $(this).val();
  DoX();
});
55
CMS

si vous êtes coincé en utilisant le clavier pour une autre raison (vous ne pouvez donc pas modifier keyup comme suggéré), vous pouvez obtenir le dernier caractère tapé comme ceci:

$("input[x]").keypress(function (e) {
    var c = String.fromCharCode(e.which);
    //process the single character or
    var textValue = $("input[x]").val();
    var fulltext = textValue + c;
    //process the full text

});
27
Vincent Ramdhanie

Utilisez onkeyup, il montrera la bonne valeur.

9
zzandy

Utilisez setTimeout sans délai. Il s'exécutera immédiatement après la fin de l'événement et vous obtiendrez la valeur correcte de l'entrée.

$("input[x]").keypress(function() {
  setTimeout(DoX);
});
0
Semra