如何根据所选选项禁用/启用复选框列表项?

时间:2015-09-23 12:44:57

标签: javascript asp.net c#-4.0

嗨,我非常渴望得到帮助,这篇文章看起来可能类似于之前的帖子,但是代码的方法和要求完全不同。

我有一个复选框列表,其中使用存储过程填充了2个checkboxlist项。但是我添加了一个" Select All"列表项到复选框列表。

1.如何"全选"如何禁用所有其他复选框列表项?使用javascript或C#onchanged事件或jquery检查(但使用外部javascript文件而不是放入aspx文件本身)?

2。如果使用javascript或C#onchanged事件或jquery检查复选框1中的特定列表项(但使用外部javascript文件而不是放入aspx文件本身),我如何禁用/启用某些复选框项?

例如在checkboxlist1中,颜色,食物和饮料都填充了选择全部,在checkboxlist2中有红色,蓝色,绿色,鸡肉,菠菜,可乐和果汁填充。

在第一个示例场景中,我检查了颜色和食物,因此我如何编码只能在checkboxlist2中启用红色,蓝色,绿色,鸡肉和菠菜,或者在第二个示例场景中我只检查了checkboxlist1中的饮料,因此它应该只启用焦炭和果汁应禁用其余列表项。

第3。如何在没有收到$ undefined错误或运行时错误的情况下将我的脚本放在js.file中而不是作为脚本作为脚本?

ASPX

    <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
    <script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>

<html>
<head runat="server">
<Script>
    $(document).ready(function () {
    var checked = false;
    $('#<%=Checkboxlist1.ClientID%> input:checkbox').click(function () {
        var currentIdone = 'Select All';
        var currentId = $(this).next().html();
        if (currentId == currentIdone) {

            if (checked) {

                $("#<%=Checkboxlist1.ClientID%> input").removeAttr('disabled');
                checked = false;
                return;
            }
            else {
                $("#<%=Checkboxlist1.ClientID%> input").attr('checked', false);
                $(this).attr('checked', true);
                $('#<%=Checkboxlist1.ClientID%> input:not(:checked)').attr('disabled', 'disabled');
                checked = true;
            }


        }

        });
    });

$(document).ready(function () {
    var checked = false;
    $('#<%=Checkboxlist2.ClientID%> input:checkbox').click(function () {
        var currentIdone = 'Select All';
        var currentId = $(this).next().html();
        if (currentId == currentIdone) {

            if (checked) {

                $("#<%=Checkboxlist2.ClientID%> input").removeAttr('disabled');
                checked = false;
                return;
            }
            else {
                $("#<%=Checkboxlist2.ClientID%> input").attr('checked', false);
                $(this).attr('checked', true);
                $('#<%=Checkboxlist2.ClientID%> input:not(:checked)').attr('disabled', 'disabled');
                checked = true;
            }


        }

        });
    });
</script> 
</head>

<body>
 <form id="form1" runat="server">
     <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>
     <asp:CheckBoxList ID="Checkboxlist2" runat="server" Height="80px" Width="500px" AppendDataBoundItems="True" ViewStateMode="Enabled">
                        <asp:ListItem Text="Select All" Value="Select All"></asp:ListItem>
                    </asp:CheckBoxList>
    </form>    
</body>
    </html>

1 个答案:

答案 0 :(得分:0)

checkboxlist1_SelectedIndexChanged我假设Sellect all1这里是代码

 protected void checkboxlist1_SelectedIndexChanged(object sender, EventArgs e)
    {
        string roles = "";
        try
        {
            roles = checkboxlist1.SelectedValue;



                foreach (ListItem li1 in this.checkboxlist1.Items)
                {
                    //checkboxlist1.Items.FindByText(li.ToString()).Selected = true;

                    if (li1.Value != "1" )
                    {
                           checkboxlist1.Items.FindByText(li1.ToString()).Enabled = false;
                    }
                    else
                    {
                        checkboxlist1.Items.FindByText(li1.ToString()).Enabled = true;
                    }
                }



            Boolean A = false;
            foreach (ListItem li in this.checkboxlist1.Items)
            {
                //checkboxlist1.Items.FindByText(li.ToString()).Selected = true;

                if (li.Selected)
                {
                    A = true;
                }
            }
            if (A == false)
            {
                foreach (ListItem li in this.checkboxlist1.Items)
                {
                    checkboxlist1.Items.FindByText(li.ToString()).Enabled = true;
                }
            }



        }
        catch (Exception ex)
        {
            ClientLogger.ClientErrorLogger(ex.Message);
        }
    }