Asp.net
如何驗證使用者在 CheckBoxList 中選擇了至少一個複選框?
我有一個 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.net和 MSDN
您不需要使用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 將完全支持它。