2012-05-16 3 views
6

Я использую эти события, чтобы попытаться оценить ввод формы, но если форма автозаполняется браузером, эти события не срабатывают. Как я могу сделать пожар событий на автозаполнении?JQuery .keyup .keydown .keypress не обнаруживает браузер autofill

+0

Я исследовал это некоторое время назад, и я не думаю, что вы можете, нет события для автозаполнения браузера. Были бы заинтересованы в любых ответах, хотя :) –

+0

Не зная точно, что вы делаете, не могли бы вы добавить обработчик событий. ..()? Я честно даже не уверен, что это событие даже срабатывает с автозаполнением браузера. – jaredhoyt

+0

Я бы опробовал '.change()', как предложил Джаред, но если это не сработает, возможно, вам придется использовать '.blur()'. – nnnnnn

ответ

2

К сожалению, нет способа обнаружить автозаполнение браузера. Вместо этого используйте setInterval, например, для запуска функции на довольно высокой частоте, которая проверяет, соответствует ли исходное значение (или пустое) входному значению и вызывает ответ таким образом. Если вы не хотите этого делать, вы, вероятно, SOL, поскольку браузер даже не запускает .change, и любое событие, скорее всего, не совместимо с кросс-браузером.

У вас также могут быть события проверки, выполняемые также при отправке формы, что должно быть столь же эффективным.

+0

Да, проблема с техникой отправки - я меняю цвет границы ввода на основе проверки содержимого, поэтому мне нужно, чтобы событие срабатывало каждый раз, когда оно было изменено –

0

Вы можете немного подделать требуемое поведение путем привязки к событиям .click() и/или .dblclick().

Это не гарантируется, но вы можете получить дополнительный щелчок мыши, если они решили «утвердить» автозаполнение, выбрав его из окна.

2

Я знаю, что это довольно старый вопрос, но я решил ту же проблему, используя e.preventDefault() после функции keyup.

$("#email").keyup(function (e) { 
     e.preventDefault(); 

Таким образом, если вы выберете с помощью предложения обозревателя autofill, это заметит. Проблема остается, когда вы нажимаете мышью на подсказке, но она отлично работает, если вы нажмете любую клавишу после ее выбора.

окончательное решение

Я нашел этот пост на StackOverflow: https://stackoverflow.com/a/24746108/3481005

и используя .он ("вход") делает трюк!

$("#email").on("input",function (e) { 
Смежные вопросы