如何在单击“全选”后取消选中之前选择的其他所选列表项?

时间:2015-09-24 08:24:59

标签: javascript c# sql asp.net c#-4.0

我有这些代码允许我在选中“全选”时禁用所有其他复选框但是如果我之前在选中“全选”之前检查了其他复选框,则之前选中的复选框不会被删除但只会被禁用仍然检查框。那么如何在我点击“全选”后取消选中之前选择的其他所选列表项?

<asp:CheckBoxList ID="Checkboxlist1" runat="server" Height="80px" Width="500px" AppendDataBoundItems="True" ViewStateMode="Enabled">
                    <asp:ListItem Text="Select All" Value="Select All"></asp:ListItem>
                </asp:CheckBoxList> 


  $(function () {
    $("#Checkboxlist :checkbox").change(function () {
        $("#Checkboxlist  :checkbox").click(function () {
            var ischecked = $(this).is(":checked");
            var val = $(this).val();
            //alert(val);
            if (val == "Select All") {
                if (ischecked) {                    
                    $("#Checkboxlist  :checkbox").attr('disabled', 'disabled');
                    $(this).removeAttr('disabled');
                    $(this).attr('checked', true)
                    return;
                } else {                 
                    $("#Checkboxlist  :checkbox").removeAttr('disabled');
                    return;
                }
            }
        });
    });
})

1 个答案:

答案 0 :(得分:0)

else之前,return之前只需从Select All删除已禁用的内容:

$(this).removeAttr("disabled");

仅修改selector,因为checkbox的值不是Select All

$("#Checkboxlist1:checkbox[value='Select All']")

<强>代码:

if (val == "Select All") {
    //if Select All is checked, disable all other checkboxes and uncheck them as well
    if (ischecked) {
        $("#Checkboxlist1:checkbox").attr("disabled", "disabled"); //disable all checkboxes
        $("#Checkboxlist1:checkbox").prop('checked', false);  //uncheck all checkboxes          
        $(this).prop('checked', true);  //check the "Select All" checkbox       
        return;
    }
    //enable all other checkboxes and uncheck them too
    else {
        $("#Checkboxlist1:checkbox").removeAttr("disabled"); //enable all checkboxes
        $("#Checkboxlist1:checkbox").prop('checked', false); //uncheck all checkboxes          
        $(this).prop('checked', false);  //uncheck the "Select All" checkbox
        return;
    }
}