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();
});
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.