Callback события click блокируется callbackом change?

Рейтинг: 0Ответов: 1Опубликовано: 14.04.2015

Есть у меня на странице инпут и ссылка. Человек вводит что то в инпуте и нажимает ссылку, должны сработать оба события. В случае с console.log() срабатывают оба, но например если сделать вместо этого alert() то сработает только change. Помогите разобраться, как сделать чтоб сработали оба события?

ТАК РАБОТАЮТ ОБА СОБЫТИЯ:

$('#input').change(function() {
    console.log('change');
});

$('#link').click(function(e) {
    console.log('click');
    e.preventDefault();
});

ТАК РАБОТАЕТ ТОЛЬКО CHANGE:

$('#input').change(function() {
    alert('change');
});

$('#link').click(function(e) {
    alert('click');
    e.preventDefault();
});

Ответы

▲ 1

alert() блокирует выполнение скриптов на странице. Дело частично в этом.

И частично, в том, что событие change у инпута срабатывает, если убрать с инпута фокус (т.е. щелкнуть в какую-нибудь другую часть страницы).

Вот тут и начинается магия, когда у тебя страница блокируется alert`oм от события change (ведь мы фокус с инпута убрали, щелкнув по ссылке). И, скорее всего, до события click дело просто не доходит.