Próbuję uzyskać tekst w polu tekstowym, gdy użytkownik w nim wpisuje ( jsfiddle zabaw ):
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>
Kod działa bez błędów, z wyjątkiem, że wartości w input textpolu, w czasie onKeyPressjest zawsze wartość przed zmianą:

Pytanie : Jak uzyskać tekst pola tekstowego w trakcie
onKeyPress?
Bonus Chatter
Istnieją trzy zdarzenia związane ze słowem „użytkownik pisze” w HTML DOM:
onKeyDownonKeyPressonKeyUp
W systemie Windows kolejność WM_Keykomunikatów staje się ważna, gdy użytkownik przytrzymuje klawisz, a klucz zaczyna się powtarzać:
WM_KEYDOWN('a')- użytkownik nacisnął AklawiszWM_CHAR('a')-apostać została odebrana od użytkownikaWM_CHAR('a')-apostać została odebrana od użytkownikaWM_CHAR('a')-apostać została odebrana od użytkownikaWM_CHAR('a')-apostać została odebrana od użytkownikaWM_CHAR('a')-apostać została odebrana od użytkownikaWM_KEYUP('a')- użytkownik zwolnił Aklucz
Spowoduje, że w kontrolce tekstowej pojawi się pięć znaków: aaaaa
Ważne jest to, że odpowiadasz na WM_CHARwiadomość, tę, która się powtarza. W przeciwnym razie przegapisz wydarzenia po naciśnięciu klawisza.
W HTML sprawy wyglądają nieco inaczej:
onKeyDownonKeyPressonKeyDownonKeyPressonKeyDownonKeyPressonKeyDownonKeyPressonKeyDownonKeyPressonKeyUp
Html dostarcza KeyDowni KeyPresskażdy klucz powtórki. A KeyUpzdarzenie jest wywoływane tylko wtedy, gdy użytkownik zwolni klawisz.
Na wynos
- I może reagować na
onKeyDownlubonKeyPress, ale oba są jeszcze podniesiona, zaniminput.valuezostał zaktualizowany - Nie mogę odpowiedzieć
onKeyUp, ponieważ nie dzieje się tak, gdy zmienia się tekst w polu tekstowym.
Pytanie: Jak uzyskać tekst pola tekstowego w trakcie onKeyPress?