Можно ли привязать keyup ко всей форме?

Можно ли связать keyup() со всем <form>? Например, у меня есть несколько полей <input type="text"> внутри формы, и я хочу привязать событие keyup ко всем из них, не прикрепляя к каждому обработчик событий keyup. Скорее, я хочу привязать один обработчик события keyup ко всем из них, чтобы, если какое-либо из текстовых полей обнаружит событие keyup, обработчик события запустился. Возможно ли это в jQuery?

Я попытался:

$('form').keyup(function() {...});

Но это заставило обработчик события keyup срабатывать бесконечно после ввода одного символа.


person George Newton    schedule 17.03.2014    source источник


Ответы (2)


Я не думаю, что это возможно, но вы можете привязать одно и то же событие keyup ко всем входам одновременно:

$('#myform input[type=text]').on('keyup', /* yada */);
person TimWolla    schedule 17.03.2014

Вы можете попробовать что-то вроде этого: Быстрая демонстрация

$(function(){
   //create one instance for handler:
   var myHandler = function(e){ /* Your function */ };

   //Bind it:
   $("#form input[type=text]").on('keyup',function(e){ myHandler(e);  });

});
person Shlomi Hassid    schedule 17.03.2014
comment
Зачем оборачивать функцию в еще одну функцию? - person TimWolla; 17.03.2014
comment
@TimWolla $(function() {...}) такой же, как $(document).ready(function() {...}) - person Jason P; 17.03.2014
comment
@ShlomiHassid Я говорю не об этой jQuery(document).ready, а о дополнительной функции on в вас. - person TimWolla; 17.03.2014
comment
@JasonP Я знаю об этом, см. мой ответ Шломи. - person TimWolla; 17.03.2014
comment
Он может захотеть сделать что-то конкретное для любого поля ввода - и самое главное - перехватить событие для последующего использования, например e.keyCode, без которого вы не можете передать событие... - person Shlomi Hassid; 17.03.2014