检查客户端的一组复选框中是否选中了复选框

时间:2011-04-03 11:31:47

标签: javascript jquery asp.net

请注意,该场景是ASP.NET Webforms + Master - 内容页面,它会弄乱ID 比方说,我有三个复选框

<asp:CheckBox ID="chkConsultantQuality" runat="server" 
            CssClass="company"/>
<asp:CheckBox ID="chkConsultantEnvironment" runat="server" 
            CssClass="company"/>
<asp:CheckBox ID="chkConsultantSafety" runat="server" 
            CssClass="company"/>

我想根据以下条件对每个复选框的点击事件进行div id="CompanyPanel"

    如果选中任何复选框,则
  1. 可见。
  2. 如果未选中所有复选框,则
  3. 隐藏。
  4. 我打算使用jQuery,因为我按类名选择。我可以在class ='company'上使用jQuery.each来检查每个检查标志 有更好的想法吗?

3 个答案:

答案 0 :(得分:7)

您可以使用:checkedhttp://api.jquery.com/checked-selector/)选择器:

<script>
    $(document).ready(function() {
        $(".company input").click(function() {
            var cnt = $(".company input:checked").length;

            if( cnt == 0)
            {
               // none checked
               $('#CompanyPanel').hide();
            }
            else
            {
               // any checked
               $('#CompanyPanel').show();
            }
        });
    });
</script>

您可能希望在这些复选框的容器上添加(或使用)ID,以优化选择器的速度。

至于asp.net搞乱控件上的客户端ID,你可以使用

$('<% =MyControl.ClientID %>')

答案 1 :(得分:5)

您可以在所有复选框上等待click事件,然后在那里执行验证。无需.each()。这样,只要选中或取消选中任何复选框,就会验证。

$('input.company:checkbox').click(function(){
    if ($('input.company:checkbox:checked').length > 0)
    {
        $('div#CompanyPanel').show();
    }
    else 
    {
        $('div#CompanyPanel').hide();
    }
});

您也可以稍微优化它,并根据您的需要进行更改。

答案 2 :(得分:1)

使用CheckBoxList和Dado.Validators可以非常轻松地完成此操作,它为CheckBoxLists提供支持。请注意,这提供了客户端和服务器端验证。

<asp:CheckBoxList ID="cblCheckBoxList" runat="server">
    <asp:ListItem Text="Check Box (empty)" Value="" />
    <asp:ListItem Text="Check Box 1" Value="1" />
    <asp:ListItem Text="Check Box 2" Value="2" />
    <asp:ListItem Text="Check Box 3" Value="3" />
</asp:CheckBoxList>

<Dado:RequiredFieldValidator runat="server" ControlToValidate="cblCheckBoxList" ValidationGroup="vlgSubmit" />

示例codebehind.aspx.cs

btnSubmit.Click += (a, b) =>
{
    Page.Validate("vlgSubmit");
    if (Page.IsValid) {
        // Validation Successful
    }
};

Dado.Validators还有许多其他有用的功能值得一看。

https://www.nuget.org/packages/Dado.Validators/