Я намагаюся отримати текст у текстовому полі під час введення користувачем ( 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 є три події, пов’язані з "користувач набирає текст" :
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
?