I wrote this snippet of javascript/jQuery to change a check box. http://jsfiddle.net/johnhoffman/crF93/
Javascript
$(function() { $("a").click(function() { if ($("input[type='checkbox']").attr('checked') == "checked") $("input[type='checkbox']").removeAttr('checked'); else $("input[type='checkbox']").attr('checked', 'checked'); return false; }); $("input[type='checkbox']").change(function(){ console.log("Checkbox changed."); }); });
HTML
<input type="checkbox" /> <a href="#">Change CheckBox</a>
Interestingly, clicking the link alters the text box, but does not trigger the form change event that calls the function that logs a message in Chrome Web Developer Console. Why? How do I make it do that?
When the state of a checkbox is changed, it generates an event of type ItemEvent. The associated listener interface is ItemListener.
You can bind event handlers to dynamically created elements the same way you assign an id to them, such as by doing 'li. onclick = checkCount;' , where checkCount is the name of the function you want to assign to the handler.
You need to trigger the change event, .trigger('change')
, so that event knows that a change took place.
From http://api.jquery.com/change/:
Description: Bind an event handler to the "change" JavaScript event, or trigger that event on an element.
This method is a shortcut for
.on( "change", handler )
in the first two variations, and.trigger( "change" )
in the third.The
change
event is sent to an element when its value changes. This event is limited to<input>
elements,<textarea>
boxes and<select>
elements. For select boxes, checkboxes, and radio buttons, the event is fired immediately when the user makes a selection with the mouse, but for the other element types the event is deferred until the element loses focus.
Demo:
http://jsfiddle.net/nPkPw/3/
Using chaining: http://jsfiddle.net/nPkPw/5/
i.e. $("input[type='checkbox']").trigger('change').attr('checked', 'checked');
This isn't surprising, but I guess you could as this to the list of non-effect in the msdn.
You could always just .click()
it jsFiddle
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With