Я намагаюся отримати текст у текстовому полі під час введення користувачем ( 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>
Код виконується без помилок, за винятком того, що значення в input textполе, під час onKeyPressзавжди значення , перш ніж зміни:

Запитання : Як отримати текст текстового поля протягом
onKeyPress?
Бонусна балачка
У DOM HTML є три події, пов’язані з "користувач набирає текст" :
onKeyDownonKeyPressonKeyUp
У 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 речі дещо відрізняються:
onKeyDownonKeyPressonKeyDownonKeyPressonKeyDownonKeyPressonKeyDownonKeyPressonKeyDownonKeyPressonKeyUp
Html поставляє KeyDownі KeyPressкожен ключ повторення. А KeyUpподія піднімається лише тоді, коли користувач відпускає ключ.
Забирайте
- Я можу відповісти на
onKeyDownабоonKeyPress, але обидва вони все ще піднімаються доinput.valueоновлення - Я не можу відповісти
onKeyUp, оскільки цього не відбувається, оскільки текст у текстовому полі змінюється.
Запитання: Як отримати текст текстового поля протягом onKeyPress?