Есть ли способ иметь keyup
, keypress
, blur
и change
события называют ту же функцию в одной строке , или я должен делать их по отдельности?
У меня проблема в том, что мне нужно проверить некоторые данные с помощью поиска в БД, и я хотел бы убедиться, что проверка не пропущена ни в одном случае, независимо от того, напечатана она или вставлена в поле.
jquery
events
jquery-events
shaneburgess
источник
источник
.on('keyup.foo keypress.foo blur.foo change.foo', …)
или.on('keyup keypress blur change .foo', …)
?on('click tap', e => {...})
. Слушатель может быть запущен дважды, я просто хочу запустить один раз, как я могу кодировать в функции слушателя?$('#element:not(.busy)').on('keyup keypress blur change', function(e){…});
наконец, удалите className «busy».Начиная с jQuery 1.7,
.on()
метод является предпочтительным методом для прикрепления обработчиков событий к документу. В более ранних версиях.bind()
метод используется для присоединения обработчика событий непосредственно к элементам.источник
Я искал способ получить тип события, когда jQuery прослушивает несколько событий одновременно, и Google разместил меня здесь.
Итак, для тех, кто заинтересован,
event.type
мой ответ:Больше информации в документе JQuery .
источник
Вы можете использовать метод связывания, чтобы прикрепить функцию к нескольким событиям. Просто передайте имена событий и функцию-обработчик, как в этом коде:
Другой вариант - использовать поддержку jQuery Api.
источник
Если вы присоединяете один и тот же обработчик событий к нескольким событиям, вы часто сталкиваетесь с тем, что одновременно запускается более одного из них (например, пользователь нажимает вкладку после редактирования; могут сработать нажатия клавиш, изменение и размытие).
Похоже, что вы на самом деле хотите что-то вроде этого:
источник
Вот как я это делаю.
источник
Вы можете определить функцию, которую хотите использовать повторно, как показано ниже:
И позже вы можете установить сколько угодно прослушивателей событий на вашем объекте для запуска этой функции, используя on ('event'), оставляя пробел между ними, как показано ниже:
источник
Ответ Тату заключается в том, как я бы сделал это интуитивно, но у меня возникли некоторые проблемы в Internet Explorer с этим способом вложения / привязки событий, даже если это делается с помощью
.on()
метода.Я не смог точно определить, с какими версиями jQuery это проблема. Но иногда я вижу проблему в следующих версиях:
Мой обходной путь должен был сначала определить функцию,
а затем обрабатывать события индивидуально
Это не самое красивое решение, но оно работает для меня, и я подумал, что выложу его, чтобы помочь другим, которые могут наткнуться на эту проблему.
источник
Этот урок посвящен обработке нескольких событий.
источник
Это возможно, используя
.on()
, который принимает следующую структуру:,.on( events [, selector ] [, data ], handler )
так что вы можете передать несколько событий этому методу. В вашем случае это должно выглядеть так:И вот живой пример:
источник
Это легко реализовать с помощью встроенных методов DOM без большой библиотеки, такой как jQuery, если вы хотите, просто требуется немного больше кода - переберите массив имен событий и добавьте слушатель для каждого:
источник