jQuery 'if .change () или .keyup ()'

Используя jQuery, я бы хотел запустить функцию, когда .change() или .keyup() подняты.

Примерно так.

if ( jQuery(':input').change() || jQuery(':input').keyup() )
{
    alert( 'something happened!' );
}

ИЗМЕНИТЬ

Извините, я забыл упомянуть. И .change(), и .keyup() нужны некоторые из переменные должны быть в области видимости.

65 голосов | спросил cnotethegr8 13 +04002011-10-13T20:29:18+04:00312011bEurope/MoscowThu, 13 Oct 2011 20:29:18 +0400 2011, 20:29:18

6 ответов


0

вы можете привязать несколько событий, разделяя их пробелом:

$(":input").bind("keyup change", function(e) {
    // do stuff!
})

документы здесь .

надеюсь, что это поможет. ура!

ответил keeganwatkins 13 +04002011-10-13T20:31:31+04:00312011bEurope/MoscowThu, 13 Oct 2011 20:31:31 +0400 2011, 20:31:31
0

Если вы когда-либо динамически генерируете контент страницы или загружаете контент через AJAX, то следующий пример - действительно то, что вам нужно:

  1. Это предотвращает двойное связывание в случае, когда скрипт загружается более одного раза, например, в AJAX-запросе.
  2. Привязка хранится в body документа, поэтому независимо от того, какие элементы добавлены, перемещены, удалены и повторно добавлены, все потомки body, соответствующие указанному селектору, сохранят правильную привязку.

Код:

// Define the element we wish to bind to.
var bind_to = ':input';

// Prevent double-binding.
$(document.body).off('change', bind_to);

// Bind the event to all body descendants matching the "bind_to" selector.
$(document.body).on('change keyup', bind_to, function(event) {
    alert('something happened!');
});

Пожалуйста, обратите внимание! Я использую $.on() и $.off() а не другие методы по нескольким причинам:

  1. $.live() и $.die() устарели и были опущено в более поздних версиях jQuery.
  2. Мне нужно либо определить отдельную функцию (поэтому загромождая глобальную область видимости), и передать функцию обоим $.change() и $.keyup() отдельно или передать одно и то же объявление функции для каждой вызываемой функции; Дублирующая логика ... Что абсолютно недопустимо.
  3. Если элементы добавляются в DOM, $.bind() не связывается динамически с элементами при их создании. Поэтому, если вы связываетесь с :input, а затем добавляете вход в DOM, этот метод связывания не присоединяется к новому входу. Затем вам нужно будет явно отменить привязку, а затем повторно привязать ко всем элементам в DOM (в противном случае вы получите дублирование привязок). Этот процесс нужно будет повторять каждый раз, когда вход добавляется в DOM.
ответил Joshua Burns 25 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 25 Sep 2013 00:15:34 +0400 2013, 00:15:34
0

Вы можете подписаться на события change и keyup:

$(function() {
    $(':input').change(myFunction).keyup(myFunction);
});

где myFunction - это функция, которую вы хотели бы выполнить:

function myFunction() {
    alert( 'something happened!' );
}
ответил Darin Dimitrov 13 +04002011-10-13T20:31:29+04:00312011bEurope/MoscowThu, 13 Oct 2011 20:31:29 +0400 2011, 20:31:29
0

Сделай это.

$(function(){
    var myFunction = function()
    {
        alert("myFunction called");
    }

    jQuery(':input').change(myFunction).keyup(myFunction);
});
ответил brenjt 13 +04002011-10-13T20:30:48+04:00312011bEurope/MoscowThu, 13 Oct 2011 20:30:48 +0400 2011, 20:30:48
0

Это не так, как работают события. Вместо этого вы даете им функцию, которая будет вызываться при их возникновении.

$("input").change(function() {
    alert("Something happened!");
});
ответил Alex Turpin 13 +04002011-10-13T20:31:33+04:00312011bEurope/MoscowThu, 13 Oct 2011 20:31:33 +0400 2011, 20:31:33
0

Напишите одну функцию и вызовите ее для них обоих.

function yourHandler(e){
    alert( 'something happened!' );        
}
jQuery(':input').change(yourHandler).keyup(yourHandler);

Функции регистрации событий change () и keyup () возвращают исходный набор, поэтому их можно объединять в цепочки.

ответил StuperUser 13 +04002011-10-13T20:31:41+04:00312011bEurope/MoscowThu, 13 Oct 2011 20:31:41 +0400 2011, 20:31:41

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132