jquery keypress() Ereignis erhält Text

Lesezeit: 2 Minuten

Ich möchte, dass eine Funktion ausgeführt wird, wenn ein Tastendruck in einem Textfeld auftritt, also habe ich diesen Code:

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

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

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

Das Problem hier ist nun, dass es um einen Schlüssel hinterherhinkt. Wenn also in meinem Textfeld „He“ steht und ich ein „l“ eingebe, dann möchte ich, dass mein textValue „Hel“ ist, aber es gibt den vorherigen Wert „He“ zurück. weil das Zeichen vermutlich noch nicht in das Textfeld eingefügt wurde.

Gibt es hier eine Möglichkeit, ‘Hel’ aus meiner Funktion herauszubekommen?

Vielen Dank 🙂

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

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

Benutzer-Avatar
Vincent Ramdhanie

Wenn Sie aus einem anderen Grund mit der gedrückten Taste nicht weiterkommen (so dass Sie nicht wie vorgeschlagen zu keyup wechseln können), 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

});

  • ("input[x]").val() sollte sein: $("input[x]").val() oder noch besser: $(this).val() oder noch besser: this.value

    – Oleg Grischko

    14. November 2011 um 17:15 Uhr

  • Ein Wort der Warnung, nachdem ich bei diesem Ansatz auf Probleme gestoßen bin – es wird davon ausgegangen, dass sich der Cursor immer am Ende des Textfeldtextes befindet. Wenn Sie beispielsweise EST-Home-T eingeben, erhalten Sie in einem normalen Editorfenster “TEST”, aber dieses JS ergibt “ESTT”.

    – Stefan Mohr

    4. September 2012 um 8:09 Uhr

Verwenden onkeyupes wird der richtige Wert angezeigt.

Verwenden Sie setTimeout ohne Verzögerung. Es wird sofort ausgeführt, nachdem das Tastendruckereignis abgeschlossen ist, sodass Sie den richtigen Wert der Eingabe haben.

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

1159180cookie-checkjquery keypress() Ereignis erhält Text

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy