При использовании jquery .change
наinput
событие будет только тогда, когда ввод теряет фокус
В моем случае мне нужно позвонить в службу (проверить, является ли значение допустимым), как только изменилось входное значение. Как я мог сделать это?
javascript
jquery
html
сирена воздушной тревоги
источник
источник
Ответы:
ОБНОВЛЕНО для пояснения и примера
примеры: http://jsfiddle.net/pxfunc/5kpeJ/
Способ 1.
input
СобытиеВ современных браузерах используют
input
событие. Это событие будет срабатывать, когда пользователь вводит текстовое поле, вставляя, отменяя, в основном, каждый раз, когда значение изменяется от одного значения к другому.В jQuery сделай так
начиная с jQuery 1.7, заменить
bind
наon
:Способ 2.
keyup
событиеДля более старых браузеров используйте это
keyup
событие (оно будет срабатывать после отпускания клавиши на клавиатуре, это событие может давать своего рода ложное срабатывание, поскольку при отпускании «w» значение ввода изменяется иkeyup
событие срабатывает, но также и когда Клавиша «Shift» отпускается, когда происходитkeyup
событие, но не было внесено никаких изменений во ввод.). Также этот метод не срабатывает, если пользователь щелкает правой кнопкой мыши и вставляет из контекстного меню:Способ 3. Таймер (
setInterval
илиsetTimeout
)Чтобы обойти ограничения,
keyup
вы можете установить таймер, чтобы периодически проверять значение входа, чтобы определить изменение значения. Вы можете использоватьsetInterval
илиsetTimeout
сделать эту проверку таймера. Посмотрите помеченный ответ на этот вопрос SO: событие изменения текстового поля jQuery или посмотрите на скрипку рабочий пример, используяfocus
иblur
события для запуска и остановки таймера для определенного поля вводаисточник
innerText
orvalue
(имитирующее пользовательский ввод) вызовет событие MutationObserver jsfiddle.net/pxfunc/ 04chgpws / 1 (см. Console.log для ведения журнала событий MutationObserver). У вас есть другой тестовый пример, на который я могу посмотреть?Если у вас есть HTML5:
oninput
(срабатывает только тогда, когда изменение действительно происходит, но делает это немедленно)В противном случае вам нужно проверить все эти события, которые могут указывать на изменение значения элемента input:
onchange
onkeyup
( нетkeydown
илиkeypress
как значение ввода не будет иметь нового нажатия клавиши еще)onpaste
(когда поддерживается)и возможно:
onmouseup
(Я не уверен в этом)источник
С HTML5 и без использования jQuery вы можете использовать
input
событие :Это будет срабатывать каждый раз, когда изменяется текст ввода.
Поддерживается в IE9 + и других браузерах.
Попробуйте это вживую в jsFiddle здесь .
источник
Как уже предлагали другие, решение в вашем случае заключается в обнаружении нескольких событий .
Плагины, выполняющие эту работу, часто прослушивают следующие события:
Если вы думаете , что может поместиться, вы можете добавить
focus
,blur
и другие события тоже.Я предлагаю не превышать в событиях прослушивание, так как он загружает в память браузера дальнейшие процедуры, выполняемые в соответствии с поведением пользователя.
Внимание: обратите внимание, что изменение значения элемента ввода с помощью JavaScript (например, с помощью
.val()
метода jQuery ) не вызовет ни одно из указанных выше событий.(Ссылка: https://api.jquery.com/change/ ).
источник
.val()
например, для события изменения в поле ввода, вы должны сделать что-то вроде этого ...$('#element').val(whatever).change()
Если вы хотите, чтобы событие запускалось при изменении чего-либо внутри элемента, вы можете использовать событие keyup .
источник
onchange
, либо отслеживать состояние самостоятельно.keydown
не работает, потому что срабатывает до изменения состояния входа.// .blur срабатывает, когда элемент теряет фокус
// Для запуска вручную используйте:
источник
Существуют события jQuery, такие как keyup и keypress, которые вы можете использовать с входными HTML-элементами. Вы можете дополнительно использовать событие blur () .
источник
keypress
события, потому что нажатая клавиша еще не изменила это значение.Это покрывает каждое изменение ввода, используя jQuery 1.7 и выше:
источник