为什么没有onChange事件产生?

时间:2012-06-04 21:15:13

标签: javascript jquery html events checkbox

假设我们有以下标记:

<form>
    <button type="button" id="all">check all</button>
    <button type="button" id="none">check none</button>
    <input type="checkbox" value="one" />
    <input type="checkbox" value="two" />
    <input type="checkbox" value="three" />
</form>

遵循JavaScript代码:

(function($, document) {
    $('#all').on('click', function() {
         $('input', $(this).parent()).prop('checked', 'checked');
    });
    $('#none').on('click', function() {
        $('input', $(this).parent()).removeProp('checked');
    });

    $('input').on('change', function() {
        alert(this.value);
    });
}(jQuery, document));

(见http://jsfiddle.net/inst/h7kyq/1/

为什么在点击任意按钮时没有输入onChange事件处理程序?

2 个答案:

答案 0 :(得分:3)

在javascript中发生更改时不会触发事件。你需要自己解雇这个活动:

$('input', $(this).parent()).removeProp('checked').change();

答案 1 :(得分:1)

任何编程更改(从脚本更改)到输入元素都不会触发onchange事件..

或者,您应该在更改状态/值时手动触发更改事件。

见下文,

$('input', $(this).parent()).removeProp('checked').change();

DEMO: http://jsfiddle.net/h7kyq/4/