jQuery запускает событие keyup, только если оно было присоединено с помощью jQuery - PullRequest
5 голосов
/ 19 июня 2011

Действительно испорчен запуск события keyup с использованием jQuery.

Вот чистый пример

http://jsfiddle.net/xQcGM/2/

Когда я набираю любой из input, они оба запускают событие, но когда я пытаюсь запустить его программно ($(element).trigger('event')), срабатывает только второй, но я ожидаю обоих.

Где я что-то пропускаю?

UPD Я не могу изменить способ подключения обработчика!

1 Ответ

6 голосов
/ 19 июня 2011

Собственный способ вызвать события - вызвать dispatchEvent.К сожалению, этот метод не встречается нигде в источнике jQuery .Поэтому я предполагаю, что вы должны либо сами создать объекты событий, либо отправить их вручную.

Вот более длинная версия с рабочим примером .

$('button').click(function() {
        var myEvent = document.createEvent('KeyboardEvent');
        myEvent.initKeyboardEvent('keyup', true, true, null, false, 
                                false, false, false, 76, 0);
        $('input').each(function() {
            this.dispatchEvent(myEvent);
        });
    });

Или выможно посмотреть на jQuery имитирующий плагин , который делает его немного проще.Вот более короткая версия с другим рабочим примером .

$('button').click(function() {
    $('input').simulate('keyup');
});
...