5

I am implementing a "Billing address is same as Address" type function, which when a checkbox is checked fills the fields based on the other fields. Works perfectly.

The function for the click event..

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

Now I use an event (jquery hotkey plugin) to auto fill all of the fields in the form so I can easily and quickly demo and test the form. Instead of cheating and filling in the billing fields as the address fields i want to use

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

This does not work the first time I fire the event, as in the above function which is called it checks for the attribute of checked, however the trigger('click'), apparently calls the event BEFORE it changes the attribute.

Which means for me to simulate it correctly I have to do this..

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

Reading the jquery page for trigger, I didn't notice this mentioned, and I haven't bothered to dig through the source to see what actually is occurring but it seems to me that ideally the trigger event should set the 'checked' attribute before firing the event itself as that is a better simulation of a person checking a checkbox?

Am I missing something?

1 Answer 1

8

you should use change() instead of click().

$("#CheckboxForAutofillId").change(function()
{
    if(this.checked) ...
});
Sign up to request clarification or add additional context in comments.

1 Comment

always happy to see proper use of js/jquery mix +1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.