0

我只是坐在我的第一个真正的 asp.net c# 项目前面,我不知道如何验证用户必须选中 4 个复选框才能进入我网站的下一步。

ASP.NET

<div class="panel-body">
<p>Select 4 Items from the List</p>
 <label class="checkbox">
    <asp:CustomValidator ID="SelectValidator" runat="server"
        ErrorMessage="Please select FOUR (4) Items!"
        OnServerValidate="SelectValidator_ServerValidate"></asp:CustomValidator>
    <asp:CheckBox ID="CheckBox1" Text="" runat="server" /><br>
    <asp:CheckBox ID="CheckBox2" Text="" runat="server" /><br>
    <asp:CheckBox ID="CheckBox3" Text="" runat="server" /><br>
    <asp:CheckBox ID="CheckBox4" Text="" runat="server" /><br>
    <asp:CheckBox ID="CheckBox5" Text=" " runat="server" /><br>
    <asp:CheckBox ID="CheckBox6" Text="" runat="server" /><br>
    <asp:CheckBox ID="CheckBox7" Text="" runat="server" /><br>
    <asp:CheckBox ID="CheckBox8" Text="" runat="server" /><br>
    <asp:CheckBox ID="CheckBox9" Text="" runat="server" /><br>
</label>
</div>

代码背后

 protected void SelectValidator_ServerValidate(object source, ServerValidateEventArgs args)
 {
     args.IsValid = CheckBox1.Checked;
 }

这就是我现在在互联网上为服务器和客户端站点找到的。

4

3 回答 3

1

您可以使用 JQuery,并根据计数禁用/启用按钮...

$("input:checkbox:checked").length

如果长度 >= 4,则启用该按钮。这将阻止postbacks,但是您可以验证按钮单击的计数以确保实际检查了 4 个,这仅提供一个回发。

于 2013-10-03T20:25:25.307 回答
0

尝试使用 CheckBoxList 控件 ( MSDN )。然后,在代码隐藏中,尝试以下操作:

// count how many checkboxes are checked
var checkedItemCount = chkBoxList.Items.Count( li => li.Selected )
于 2013-10-03T20:24:27.853 回答
0

这应该适合您的问题:

http://www.aspsnippets.com/Articles/Validate-ASPNet-CheckBoxList-at-least-one-CheckBox-checked-using-Custom-Validator.aspx

我确信更改此代码段以满足您的需求将非常简单。

编辑:您应该更改以测试正好 4 个复选框的部分如下所示:

<script type="text/javascript">
    function ValidateCheckBoxList(sender, args) {
        var checkBoxList = document.getElementById("<%=chkFruits.ClientID %>");
        var checkboxes = checkBoxList.getElementsByTagName("input");
    var checkboxCounter = 0;
        for (var i = 0; i < checkboxes.length; i++) {
            if (checkboxes[i].checked) {
                checkboxCounter++;
            }
        }
        args.IsValid = (checkboxCounter == 4);
    }
</script>

唯一需要改变的是一些水果引用和 checkBoxList 本身的内容。

于 2013-10-03T20:52:34.230 回答