Я пытаюсь получить текст в текстовом поле по мере того, как пользователь вводит его ( jsfiddle plays ):
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>
Код выполняется без ошибок, за исключением того, что значение в input text
поле, во время onKeyPress
всегда значения , прежде чем изменения:
Вопрос : Как получить текст текстового поля во время
onKeyPress
?
Бонусный чат
Есть три события, связанных с тем, что «пользователь вводит текст» в HTML DOM:
onKeyDown
onKeyPress
onKeyUp
В Windows порядок WM_Key
сообщений становится важным, когда пользователь удерживает клавишу, и клавиша начинает повторяться:
WM_KEYDOWN('a')
- пользователь толкнул вниз AключаWM_CHAR('a')
-a
персонаж получен от пользователяWM_CHAR('a')
-a
персонаж получен от пользователяWM_CHAR('a')
-a
персонаж получен от пользователяWM_CHAR('a')
-a
персонаж получен от пользователяWM_CHAR('a')
-a
персонаж получен от пользователяWM_KEYUP('a')
- пользователь отпустил Aключ
В результате в текстовом элементе управления появятся пять символов: aaaaa
Важным моментом является то, что вы отвечаете на WM_CHAR
сообщение, которое повторяется. В противном случае вы пропустите события при нажатии клавиши.
В HTML все немного иначе:
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyUp
Html поставляет KeyDown
и KeyPress
каждый ключ повторения. И KeyUp
событие возникает только тогда, когда пользователь отпускает клавишу.
Забрать
- Я могу ответить на
onKeyDown
илиonKeyPress
, но оба все еще возникают доinput.value
обновления - Я не могу ответить
onKeyUp
, потому что этого не происходит при изменении текста в текстовом поле.
Вопрос: Как мне получить текст текстового поля во время onKeyPress
?