0

我是新手的jQuery,并努力解决一个问题,即当一个主复选框检查时,我试图禁用许多复选框。

我有一个包含 1 个主要复选框和 3 个辅助复选框的表单。当主复选框被选中时,所有其他辅助复选框都被禁用,但默认情况下必须处于选中状态。并且当未选中主要复选框时,所有其他被禁用的辅助复选框都将变为启用并且必须全部选中。默认情况下,当用户到达表单时:必须选中主要复选框,因此必须选中并禁用其他 3 个复选框。

这是我的代码:

<s:checkbox id="primary_CB" name="primaryCB" value="true"/>Primary checkbox
<s:checkbox cssClass="secondary_CB" name="secondary_CB1"/>Secondary checkbox1
<s:checkbox cssClass="secondary_CB" name="secondary_CB2"/>Secondary checkbox2
<s:checkbox cssClass="secondary_CB" name="secondary_CB3"/>Secondary checkbox3

我的 JQuery 代码:

$('#primary_CB').click(function () {
if ($(this).attr('checked')) {
$(".secondary_CB").attr('disabled', 'disabled');
} else {
    $(".secondary_CB").removeAttr('disabled');
    }
});

但是我的代码以奇怪的方式工作,当我第一次在表单上时,所有 4 个复选框都被选中,没有一个被禁用。只有当我取消选中/再次选中禁用功能的主要复选框时。此外,当再次禁用时,所有辅助复选框都会自动取消选中。

有人可以帮忙吗?

4

2 回答 2

1

如果我正确理解您的问题,这应该有效:

$("#primary_CB").click(function() {
    $("input.secondary_CB").prop("disabled", !this.checked);
});

对于 1.6 以下的 jQuery

$("#primary_CB").click(function() {
    $("input.secondary_CB").attr("disabled", !this.checked);
});
于 2012-08-27T12:48:53.780 回答
0
$('#primary_CB').click(function () {
if ( !$(this).is ( ":checked" ) )
{
$(".secondary_CB").attr ( "disabled" , true );
} else {
    $(".secondary_CB").removeAttr ( "disabled" );
    }
});
于 2012-08-27T12:41:52.397 回答