#javascript
#javascript
Вопрос:
Я пытался одновременно показать, что написано в поле ввода в сообщении div, но результат всегда на 1 шаг вперед / назад.
function showWhatsWritten(){
var tempText;
tempText = document.getElementById("text").value;
document.getElementById("message").innerHTML = tempText;
}
<input id="text" type="text" onkeydown="showWhatsWritten()"/>
<div id="message"></div>
Результат всегда такой:
input: 123456
output: 12345 (missing 6)
input: abcde
output: abcd (missing e)
Любая помощь будет оценена! Спасибо!
Комментарии:
1. Я не уверен, что ввод уже обновляется при запуске события нажатия клавиши. Попробуйте нажать клавишу или клавишу вверх
Ответ №1:
Вам просто нужно использовать правильное событие, onkeyup
. Попробуйте JSFiddle:
<input id="text" type="text" onkeyup="showWhatsWritten()"/>
Комментарии:
1. Спасибо! Теперь это работает! но что не так с onkeydown? Конечно, при нажатии клавиши «вниз» запускается событие?
2. Безусловно, ваше событие запускается немедленно, как только вы нажимаете клавишу вниз. Проблема в том, что нажатие клавиши — это событие клавиатуры, которое срабатывает сразу при нажатии вашей клавиши и до того, как значение самого фактического ввода обновляется, реагируя на нажатие клавиши. Вот почему вы получали
input
значение и видели, что оно еще не было обновлено.
Ответ №2:
Скорее комментарий, чем ответ.
Вы можете значительно упростить свой код:
<input type="text" onkeyup="
document.getElementById('message').innerHTML=this.value
">