在满足条件时使用jQuery选中一个框

时间:2013-11-04 06:43:42

标签: javascript jquery html checkbox conditional-statements

我有五个选择加入复选框和一个取消订阅复选框。当我单击选择加入复选框时,如果未选中任何选择加入复选框,则应自动选中取消订阅复选框。如果我然后检查其中一个选择框,则取消订阅复选框应该被自动取消选中。

自动取消选中取消订阅复选框工作正常。我没办法工作的是当没有选中选择加入复选框时自动检查取消订阅复选框。

var $jQ = jQuery.noConflict();

$jQ("#Unsubscribed").click(function(event) {
    opt_ins_unchecked = $(":checkbox" ).not('#Unsubscribed').not(':checked').length;
    if (opt_ins_unchecked == 5 && !$jQ("#Unsubscribed").is(':checked')){
        event.preventDefault();

    } else {
            $jQ("input[name=Opt-In_Premium_Content],input[name=Opt-In_Product_Updates],input[name=Opt-In_Industry_Best_Practices],input[name=Opt-In_Events_Webinars],input[name=Opt-In_Education_Training]").attr("checked", false);
    }
});

$jQ("#Opt-In_Premium_Content, #Opt-In_Product_Updates, #Opt-In_Industry_Best_Practices, #Opt-In_Events_Webinars, #Opt-In_Education_Training").click(function() {
    opt_ins_unchecked = $(":checkbox" ).not('#Unsubscribed').not(':checked').length;
    if (opt_ins_unchecked == 5){
        $jQ("#Unsubscribed").attr("checked", true);
    }

    if (opt_ins_unchecked != 0){
        $jQ("#Unsubscribed").attr("checked", false);
    }
});

为什么在没有选中选项复选框的情况下,$jQ("#Unsubscribed").attr("checked", true);行没有运行?当我取消选中所有选择加入复选框时,如何检查取消订阅框?

3 个答案:

答案 0 :(得分:1)

使用.prop()设置选中状态而不是.attr()

$jQ("#Unsubscribed").prop("checked", true);

尝试

var $unsubscribed = $jQ("#Unsubscribed");
var $checks = $jQ("#Opt-In_Premium_Content, #Opt-In_Product_Updates, #Opt-In_Industry_Best_Practices, #Opt-In_Events_Webinars, #Opt-In_Education_Training");

$checks.change(function () {
    $unsubscribed.prop("checked", $checks.filter(':checked').length == 0);
});

答案 1 :(得分:0)

jQuery 1.6+推荐prop()而不是attr():

使用新的.prop()功能:

$jQ('#Unsubscribed').prop('checked', true);
$jQ('#Unsubscribed').prop('checked', false);

jQuery 1.5及以下版本,您可以使用attr,因为prop()不可用。

或者您可以使用任何jQuery:

$jQ("#Unsubscribed").removeAttr('checked');

答案 2 :(得分:0)

事实证明它不起作用,因为if语句都在评估true