webentwicklung-frage-antwort-db.com.de

jquery keypress () event erhält Text

Ich möchte, dass eine Funktion ausgeführt wird, wenn ein Tastendruck für ein Textfeld erfolgt, daher habe ich diesen Code:

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

Das funktioniert gut, aber in meiner Funktion möchte ich etwas basierend auf dem Textwert in der Textbox tun

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

Jetzt besteht das Problem darin, dass er um einen Schlüssel hinterherhinkt. Wenn mein Textfeld "Er" und ich ein "l" eingebe, möchte ich, dass mein textValue "Hel" ist, aber er gibt den vorherigen Wert "Er" zurück. denn vermutlich wurde das Zeichen noch nicht in das Textfeld eingefügt.

Gibt es eine Möglichkeit, Hel aus meiner Funktion hier herauszuholen?

Vielen Dank :)

Sie können versuchen, das Ereignis keyup zu verwenden:

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

wenn Sie die Taste aus einem anderen Grund nicht verwenden können (Sie können also nicht wie vorgeschlagen zur Tastenkombination wechseln), können Sie das letzte Zeichen wie folgt eingeben:

$("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

Verwenden Sie onkeyup, es wird der richtige Wert angezeigt.

9
zzandy

SetTimeout ohne Verzögerung verwenden. Es wird sofort ausgeführt, nachdem das Tastendruckereignis abgeschlossen ist, damit Sie den korrekten Wert der Eingabe erhalten.

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