Why does dynamically changing a checkbox not trigger a form change event?

前端 未结 2 575
刺人心
刺人心 2020-12-09 15:35

I wrote this snippet of javascript/jQuery to change a check box. http://jsfiddle.net/johnhoffman/crF93/

Javascript

$(function() {
    $(\"a\").click(         


        
相关标签:
2条回答
  • 2020-12-09 16:14

    This isn't surprising, but I guess you could as this to the list of non-effect in the msdn.

    • "This event is fired when the contents are committed and not while the value is changing."
    • "The onchange event does not fire when the selected option of the select object is changed programmatically."

    You could always just .click() it jsFiddle

    0 讨论(0)
  • 2020-12-09 16:21

    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');

    0 讨论(0)
提交回复
热议问题