应该在asp.net中选中至少一个复选框的复选框验证

时间:2011-02-22 06:48:00

标签: javascript asp.net checkbox customvalidator

我有asp.net表单有4个复选框。不是复选框列表。具有相同名称的ValidationGroup属性的这4个复选框表示“chkValied”。我在那里添加了Custom Validator。现在想检查至少在复选框上应该检查出这些。该怎么办?

3 个答案:

答案 0 :(得分:2)

您可以使用 CustomValidator 来验证客户端或服务器端代码的输入。

aspx标记

<asp:CheckBox ID="CheckBox1" runat="server" />
<asp:CheckBox ID="CheckBox2" runat="server" />
<asp:CheckBox ID="CheckBox3" runat="server" />
<asp:CheckBox ID="CheckBox4" runat="server" />

<asp:CustomValidator 
      ID="CustomValidator1" 
      runat="server" 
      ErrorMessage="put here error description"
      ClientValidationFunction="clientfunc" 
      OnServerValidate="CheckValidate">
</asp:CustomValidator>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

.cs(代码隐藏)

protected void CheckValidate(object source, ServerValidateEventArgs args)
    {
        args.IsValid=false;
        if (CheckBox1.Checked)
            args.IsValid = true;
        if (CheckBox2.Checked)
            args.IsValid = true;
        if (CheckBox3.Checked)
            args.IsValid = true;
        if (CheckBox4.Checked)
            args.IsValid = true;

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        if (IsValid)
        {
            //valid
        }
        else
        {
            //Invalid
        }
    }

JavaScript代码

 <script type="text/javascript">
        function clientfunc(sender, args) {
            args.IsValid = false;
            if (document.getElementById("CheckBox1").checked)
                args.IsValid = true;
            if (document.getElementById("CheckBox2").checked)
                args.IsValid = true;
            if (document.getElementById("CheckBox3").checked)
                args.IsValid = true;
            if (document.getElementById("CheckBox4").checked)
                args.IsValid = true;
        }
 </script>

答案 1 :(得分:1)

答案 2 :(得分:1)

如果您使用自定义验证器,则可以使用or-statement实现此类事件:

if (chkBox1.Checked || chkBox2.Checked || chkBox3.Checked)
{
   // At least 1 checkbox was checked.
}

这适用于所有语言(尽管||不是通用的,所有语言都有它的表示)。在JavaScript中你需要.Value而不是.Checked。