2013-10-03 121 views
0

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

这是我在网上查到,现在的服务器和Clientsite。

+0

您可以使用'count'来计算检查的总复选框!我无法理解网络表格,但我仍然可以给你一个猜测! :) –

+0

四,只有4?你有没有尝试修改它来适合你的目的?你为什么没有能够得到它的工作?你有没有考虑使用[CheckBoxList](http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkboxlist.aspx)? –

回答

0

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

// count how many checkboxes are checked 
var checkedItemCount = chkBoxList.Items.Count(li => li.Selected) 
1

你可以使用jQuery和禁用/启用基于计数按钮...

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

如果长度> = 4,然后启用按钮。这将阻止postbacks,但是您可以验证按钮单击的计数以确保4实际上被检查,这只给出一个回发。

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本身的内容。

+0

谢谢你的回答,我试过这个,但是我不知道我必须改变哪个变量才能得到至少4个复选框。 – user2157063