2013-10-03 86 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