Asp.net

如何驗證使用者在 CheckBoxList 中選擇了至少一個複選框?

  • July 18, 2009

我有一個 CheckBoxList 控制項,我想要求使用者至少檢查一個框,不管他們檢查每一個,還是 3 個,甚至只檢查一個。

本著 asp.net 驗證控制項的精神,我可以使用什麼來強制執行此操作?我還在使用 Ajax 驗證擴展器,所以如果它看起來像其他控制項,而不是程式碼隱藏中的一些俗氣的伺服器驗證方法,那就太好了。

<asp:CheckBoxList RepeatDirection="Horizontal" RepeatLayout="Table" RepeatColumns="3" ID="ckBoxListReasons" runat="server">
   <asp:ListItem Text="Preliminary Construction" Value="prelim_construction" />
   <asp:ListItem Text="Final Construction" Value="final_construction" />
   <asp:ListItem Text="Construction Alteration" Value="construction_alteration" />
   <asp:ListItem Text="Remodel" Value="remodel" />
   <asp:ListItem Text="Color" Value="color" />
   <asp:ListItem Text="Brick" Value="brick" />
   <asp:ListItem Text="Exterior Lighting" Value="exterior_lighting" />
   <asp:ListItem Text="Deck/Patio/Flatwork" Value="deck_patio_flatwork" />
   <asp:ListItem Text="Fence/Screening" Value="fence_screening" />
   <asp:ListItem Text="Landscape - Front" Value="landscape_front" />
   <asp:ListItem Text="Landscape - Side/Rear" Value="landscape_side_rear" />
   <asp:ListItem Text="Other" Value="other" />
</asp:CheckBoxList>

在伺服器端做這個驗證很容易,但我假設你想在客戶端做這個?

JQuery可以很容易地做到這一點,只要您擁有所有復選框控制項共同用作選擇器的東西,例如類(.NET 控制項上的 CssClass)。您可以製作一個簡單的JQuery函式並將其連接到 ASP.NET 自定義驗證器。請記住,如果您確實使用自定義驗證器路線以確保您在伺服器端檢查它,以防 javascript 不工作,您不會像其他 .NET 驗證器那樣獲得免費的伺服器端檢查。

有關自定義驗證器的更多資訊,請查看以下連結:www.asp.netMSDN

您不需要使用JQuery,它只是使 javascript 函式迭代並查看所有復選框控制項變得更加容易,但如果您願意,您可以使用 vanilla javascript。

這是我在以下位置找到的範例:連結到原始

<asp:CheckBoxList ID="chkModuleList"runat="server" >
</asp:CheckBoxList>

<asp:CustomValidator runat="server" ID="cvmodulelist"
 ClientValidationFunction="ValidateModuleList"
 ErrorMessage="Please Select Atleast one Module" ></asp:CustomValidator>

// javascript to add to your aspx page
function ValidateModuleList(source, args)
{
 var chkListModules= document.getElementById ('<%= chkModuleList.ClientID %>');
 var chkListinputs = chkListModules.getElementsByTagName("input");
 for (var i=0;i<chkListinputs .length;i++)
 {
   if (chkListinputs [i].checked)
   {
     args.IsValid = true;
     return;
   }
 }
 args.IsValid = false;
}

旁注:JQuery只是一個包含您需要添加到頁面的小 js 文件。一旦包含它,您就可以使用所有您喜歡的JQuery 。無需安裝,我認為下一版本的 Visual Studio 將完全支持它。

引用自:https://stackoverflow.com/questions/1146234