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 text
polu, w czasie onKeyPress
jest 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:
onKeyDown
onKeyPress
onKeyUp
W systemie Windows kolejność WM_Key
komunikatów staje się ważna, gdy użytkownik przytrzymuje klawisz, a klucz zaczyna się powtarzać:
WM_KEYDOWN('a')
- użytkownik nacisnął AklawiszWM_CHAR('a')
-a
postać została odebrana od użytkownikaWM_CHAR('a')
-a
postać została odebrana od użytkownikaWM_CHAR('a')
-a
postać została odebrana od użytkownikaWM_CHAR('a')
-a
postać została odebrana od użytkownikaWM_CHAR('a')
-a
postać 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_CHAR
wiadomość, tę, która się powtarza. W przeciwnym razie przegapisz wydarzenia po naciśnięciu klawisza.
W HTML sprawy wyglądają nieco inaczej:
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyUp
Html dostarcza KeyDown
i KeyPress
każdy klucz powtórki. A KeyUp
zdarzenie jest wywoływane tylko wtedy, gdy użytkownik zwolni klawisz.
Na wynos
- I może reagować na
onKeyDown
lubonKeyPress
, ale oba są jeszcze podniesiona, zaniminput.value
został 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
?