Ich versuche, den Text in ein Textfeld zu bekommen, während der Benutzer ihn eingibt ( jsfiddle playground ):
function edValueKeyPress() {
var edValue = document.getElementById("edValue");
var s = edValue.value;
var lblValue = document.getElementById("lblValue");
lblValue.innerText = "The text box contains: " + s;
//var s = $("#edValue").val();
//$("#lblValue").text(s);
}
<input id="edValue" type="text" onKeyPress="edValueKeyPress()"><br>
<span id="lblValue">The text box contains: </span>
Der Code wird fehlerfrei ausgeführt, mit der Ausnahme, dass der Wert der input text
Box während onKeyPress
immer der Wert vor der Änderung ist:
Frage : Wie erhalte ich währenddessen den Text eines Textfelds
onKeyPress
?
Bonus Chatter
Es gibt drei Ereignisse im Zusammenhang mit "Der Benutzer tippt" im HTML-DOM:
onKeyDown
onKeyPress
onKeyUp
In Windows wird die Reihenfolge der WM_Key
Nachrichten wichtig, wenn der Benutzer eine Taste gedrückt hält und sich die Taste wiederholt:
WM_KEYDOWN('a')
- Benutzer hat die ATaste gedrücktWM_CHAR('a')
- Eina
Zeichen wurde vom Benutzer empfangenWM_CHAR('a')
- Eina
Zeichen wurde vom Benutzer empfangenWM_CHAR('a')
- Eina
Zeichen wurde vom Benutzer empfangenWM_CHAR('a')
- Eina
Zeichen wurde vom Benutzer empfangenWM_CHAR('a')
- Eina
Zeichen wurde vom Benutzer empfangenWM_KEYUP('a')
- Der Benutzer hat den ASchlüssel freigegeben
Es werden fünf Zeichen in einem Textsteuerelement angezeigt: aaaaa
Der wichtige Punkt ist, dass Sie auf die WM_CHAR
Nachricht antworten , die sich wiederholt. Andernfalls verpassen Sie Ereignisse, wenn eine Taste gedrückt wird.
In HTML sieht es etwas anders aus:
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyUp
HTML liefert eine KeyDown
und KeyPress
jede Schlüsselwiederholung. Und das KeyUp
Ereignis wird nur ausgelöst, wenn der Benutzer den Schlüssel loslässt.
Nehmen Sie weg
- Ich kann auf
onKeyDown
oder antwortenonKeyPress
, aber beide werden noch angehoben, bevor dasinput.value
aktualisiert wurde - Ich kann nicht antworten
onKeyUp
, da dies nicht geschieht, wenn sich der Text im Textfeld ändert.
Frage: Wie erhalte ich währenddessen den Text eines Textfelds onKeyPress
?
Bonuslesung
onKeyUp
zeigt die Änderungen im Textfeld nicht sofort an .