Короче говоря, я просто хотел спросить, почему в случае нажатия клавиши ни один символ (набранный при вводе) не равен no.символа отображается в выводе.это не происходит с keyup и какой из них мне следует использовать?
Если вас интересуют символов , используйте keypress
, если вы хотите обработать символ, сгенерированный событиямиили используйте input
, если вы просто хотите получить последнее значение поля.
keydown
запускается до того, как символ добавляется в поле, поэтому вы не видите4
после ввода 1234
.(Если вы запретите действие по умолчанию keydown
, символ никогда не будет добавлен.)
keypress
также запускается перед добавлением символа.
input
запускается после добавления символа.
keyup
запускается после добавления символа.
Это может помочь вам увидеть последовательность:
const input = document.getElementById("field");
const output = document.getElementById("output");
function handleEvent(e) {
output.insertAdjacentHTML("beforeend",
"" + e.type + ": " + input.value + "
");} input.addEventListener (" keydown ", handleEvent); input.addEventListener (" keyup ", handleEvent); input.addEventListener (" keypress ", handleEvent); input.addEventListener (" input ", handleEvent);
#output pre {
margin-top: 0;
margin-bottom: 0;
}
<input type="text" id="field">
<div id="output"></div>