检测收音机/复选框的更改

时间:2012-09-21 18:40:59

标签: jquery checkbox radio-button

我正在重写我的插件,我想尝试处理过去的问题。

jsFiddle Demo

单击复选框后,将触发更改事件。它正在控制台中登录。

但是,如果您使用左侧的按钮,则不会触发“更改”。

使用该插件,如果用户使用已有的代码动态选中复选框或单选按钮,我希望能够检测到此更改。

有什么想法吗?

HTML:

<input type="button" name="check" value="Checkbox" />
<input type="checkbox" name="newsletter" value="true" />​

jQuery的:

$(function() {

    // This toggle checks and unckecks the box
    $('input:button').toggle(function() {
        $('input:checkbox').prop("checked", true);
    }, function() {
        $('input:checkbox').prop("checked", false);
    });


    // Detects change of checkbox           
    $('input:checkbox').on("change", function() {
        console.log('checked!');
    });

});​

4 个答案:

答案 0 :(得分:2)

最简单的解决方法是手动触发更改事件:

$('input:checkbox').prop("checked", true).change();

http://jsfiddle.net/HruGP/1/

修改:您也可以简化按钮代码,而不是使用toggle,只需使用click并将checked属性分配给其对面当前价值:

$('input:button').on('click',function() {
    var $checkbox = $('input:checkbox');
    $checkbox.prop('checked', !$checkbox.is(':checked')).change();
});

http://jsfiddle.net/HruGP/3/

答案 1 :(得分:0)

您只需触发复选框上的click事件,而不是手动更改属性:

$('input:checkbox').click();

答案 2 :(得分:0)

$('input:button').click(function(){
    $('input:checkbox').trigger("change");
});

这允许在您单击按钮

时触发“更改”事件

答案 3 :(得分:0)

是的,触发复选框,我就是这样做的(替换你小提琴代码的第一部分):

// This toggle checks and unckecks the box
$('input:button').on('click', function(event){
    $('input:checkbox').trigger('click');             
});

当然假设您的目标是基本上按下按钮的方式来检查或取消选中该框。