Я получил:
$(someTextInputField).keypress(function() {
alert($(this).val());
});
Теперь предупреждение всегда возвращает значение ПЕРЕД нажатием клавиши (например, поле пусто, я набираю «a», а предупреждение дает мне «». Затем я набираю «b», и в предупреждении отображается «a» ...). Но мне нужно значение ПОСЛЕ нажатия клавиши - как я могу это сделать?
Справочная информация: я хотел бы включить кнопку, как только текстовое поле будет содержать хотя бы один символ. Поэтому я запускаю этот тест при каждом нажатии клавиши, но при использовании возвращаемого val () результат всегда на шаг отстает. Использование события change () для меня не вариант, потому что тогда кнопка будет отключена, пока вы не покинете текстовое поле. Если есть лучший способ сделать это, я рад это слышать!
javascript
jquery
events
forms
javascript-events
Йорг Бреннинкмайер
источник
источник
Ответы:
Изменить
keypress
наkeyup
:keypress
срабатывает при нажатии клавиши,keyup
срабатывает при отпускании клавиши.источник
Удивлен, что никто не упомянул событие js "input":
Рекомендуемые.
https://developer.mozilla.org/en-US/docs/Web/Events/input
источник
вместо нажатия клавиш используйте клавиатуру .
источник
В качестве альтернативы вы можете использовать событие keydown с таймаутом 0.
Таким образом, изменения будут применены мгновенно, вместо того, чтобы применяться, когда пользователь перестанет удерживать клавишу.
источник
Возможно, вы захотите подключить
onchange
обработчик событий вместо использования каких-либо ключевых событий.Использование
Edit > Paste
или щелчок правой кнопкой мыши затем «Вставить» вызовет событие изменения, но не ключевое событие. Обратите внимание, что некоторые браузеры могут имитировать ключевое событие при вставке (хотя я не знаю ни одного), но вы не можете рассчитывать на такое поведение.источник
Попробуйте что-то вроде этого:
Это просто вводит тайм-аут, так что после завершения цикла событий «нажатие клавиши» ваш код будет запускаться почти сразу после этого. Такой короткий интервал таймера (даже если браузер округляет его в большую сторону) не будет заметен.
edit - или вы можете использовать «keyup», как говорят все, хотя его семантика отличается.
источник