Флажок Jquery Trigger: функция, связанная с событием нажатия, происходит до того, как установлен проверенный атрибут - PullRequest
5 голосов
/ 25 июня 2011

Я реализую функцию типа «Платежный адрес совпадает с адресом», который при установке флажка заполняет поля на основе других полей.Работает отлично.

Функция для события нажатия ..

    if ($(this).attr('checked')) {
        // copy address fields to billing fields
    }
    else{
        // clear fields
    }

Теперь я использую событие (плагин горячих клавиш jquery) для автоматического заполнения всех полей в форме, чтобы я мог легкои быстро демо и проверить форму.Вместо мошенничества и заполнения полей выставления счетов в качестве полей адреса, которые я хочу использовать

$("#CheckboxForAutofillId").trigger('click'); 

Это не работает при первом запуске события, как в приведенной выше функции, которая вызывает его, проверяет наличиеАтрибут проверен, однако триггер («щелчок»), по-видимому, вызывает событие ДО того, как он изменит атрибут.

Что означает для меня правильную имитацию, я должен сделать это ..

$("#CheckboxForAutofillId").attr("checked", "checked"); // sets checked
$("#CheckboxForAutofillId").trigger('click');           // fires event then 'unchecks'
$("#CheckboxForAutofillId").attr("checked", "checked"); // rechecks

Читая страницу jquery для триггера, я не заметил, что это упомянуто, и я не удосужился покопаться в источнике, чтобы увидеть, что на самом деле происходит, но мне кажется, что в идеале событие триггера должно устанавливать 'флажок'атрибут перед запуском самого события, поскольку это лучшая симуляция человека, отмечающего флажок?

Я что-то упустил?

1 Ответ

8 голосов
/ 25 июня 2011

Вы должны использовать change () вместо click ().

$("#CheckboxForAutofillId").change(function()
{
    if(this.checked) ...
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...