2011-02-01 2 views
8

У меня есть input поле:Как использовать jquery для проверки поля ввода при изменении?

<input type="text" name="notifyEmail" id="parametersEmail" value="" size=40 /> 

У меня есть кусок JQuery кода, который работает, когда я нажимаю вкладку или в противном случае оставьте поле, которое вызывает подпрограмму проверки:

$("#parametersEmail").blur(function(event) { 
    validateParameterEmail(); 
}); 

Что бы я как сделать, запускать функцию validateParameterEmail() всякий раз, когда изменяется значение или содержимое поля ввода.

Так что я тогда тоже попробовал .change() обработчик:

$("#parametersEmail").change(function(event) { 
    validateParameterEmail(); 
}); 

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

Есть ли другой обработчик, который я должен использовать вместо этого? Или я не могу подключить несколько обработчиков событий к полю ввода?

+2

fyi ... на текстовое поле ввода, .blur() и .change() довольно эффективно то же самое. Разница - размытие = потеря фокуса, а change = потеря фокуса + другое значение. Точка в том, что вам приходится терять фокус на этом в любом случае. Если вы хотите, чтобы функция вызывалась каждый раз, когда пользователь вводит символ, когда они вводят, используйте команду .keyup или.keydown как упоминалось другими –

ответ

8

Попробуйте $("#parametersEmail").keydown(function(event) {})

+4

или .keypress() или .keyup() –

+0

Да! Огромное спасибо. –

+9

'.keydown()' фактически срабатывает перед изменением значения ввода. Другими словами, если вы наберете '1234', это будет проверено на' 123'. Аналогично, если вы наберете '1234 [delete]', он будет проверять на '1234'. '.keyup()', вероятно, лучше для проверки формы. – jonmorgan

0

Изменение относится к по щелчку/перемещения от входа. Вы может искать onKeyUp().

6

Попробуйте это:

$("#parametersEmail").bind('blur', function(event) {}); 

и

$("#parametersEmail").bind('keyup', function(event) {}); 
2

(Reality на почти 2017-й год)

Самый лучший способ установить один раз обратного вызова на все нужны события, связанные с изменением входного значения.

Есть:

  • KeyUp: пользователь вводит что-то на входе
  • изменение: общий известный метод о хранимых изменениях на входе
  • нажмите: некоторые входы принимают изменения с помощью мыши слишком
  • пасты : Да! Ctrl + V, Ctrl + Ins, RightMouseButton + Paste может изменить входное значение слишком
  • propertychange: когда некоторые JS изменяет свой вклад в любом случае, это событие будет уволен
  • вход: событие нового стандарта, который поддерживает все современные браузеры, использование это слишком

Таким образом, мы можем установить их все сразу:

$("#parametersEmail").bind("propertychange change click keyup input paste", function(event) { 
    validateParameterEmail(); 
}); 

Надеется, что это помогает кто-то. ;)

Смежные вопросы