neelmeg
neelmeg

Reputation: 2509

detect checkbox state change

I want to detect if user checks or unchecks a check box within an iframe and set a flag like so. But it does not seem to work as expected. Any pointers on the error on the code?

jQuery("#frameName").contents().find(":checkbox").bind('change', function(){        
            val = true;
            alert("changed");
    });

But I can detect if a checkbox is checked by using

var val = jQuery("#frameName").contents().find(":checkbox").is(":checked");

I want to be able to detect any state change on a checkbox and set the flag.

Upvotes: 16

Views: 29521

Answers (2)

GregL
GregL

Reputation: 38103

Bind to the click event, not change. Checkboxes work on click.

EDIT: It appears in modern browsers that changing the state of a checkbox, whether via mouse or keyboard, triggers at least the click and the change events.

See a jsFiddle demo I built for proof. Using the keyboard also triggers some key-related events, in addition to click and change.

Upvotes: 3

Rob W
Rob W

Reputation: 348972

Use the checked DOM property to check whether a checkbox is checked or not. The change event is always triggered on change, even if the checkbox gets unchecked.

jQuery("#frameName").contents().find(":checkbox").bind('change', function(){        
        val = this.checked; //<---
        alert("changed");
});

Upvotes: 25

Related Questions