2012-08-16 66 views
3

是否有可能將自定義驗證功能添加到ASP.NET CheckBox列表的jQuery驗證插件?我正在使用jquery插件來驗證客戶端的所有控件。文本框,下拉列表等。由於某些原因,它不與Checkboxlist一起工作。在純html中,checkboxlist成爲一個帶有html輸入複選框的表格。我寫了一個自定義函數來檢查是否有任何複選框被選中並將其添加到jquery驗證,但由於某種原因,該功能沒有被調用。ASP.NET CheckBoxList客戶端驗證

jQuery.validator.addMethod('cb_selectone', function (value, element) { 

    return false; 
}, 'Please select at least one option'); 

我試着一直返回false,但仍然窗體驗證成功。任何幫助將不勝感激。

+0

如果你不必使用jquery,也許這可以提供幫助。該示例是文本框,但您可以將其用於checkboxlist。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator.clientvalidationfunction.aspx – 2012-08-16 02:37:33

+0

你可以發佈你的HTML標記代碼?或者一個例子?這可能是明顯的語法錯誤。 – 2012-08-16 04:46:57

+0

我使用了相同的code.the習慣vaidator工作正常。其他代碼有問題。對於測試,我只是返回false.It不應該在這種情況下驗證,但它得到驗證。 – 2012-08-16 04:48:52

回答

1

下面是一個方法,但不使用jquery.validate。

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<script type="text/javascript" src="Scripts/jquery-1.8.0.js"></script> 
<script type="text/javascript"> 
    function cb_selectone(src, args) { 
     var items = $("input[name^='cblTest']"); 
     for (i = 0; i < items.length; i++) { 
      if ($(items[i]).is(":checked")) { 
       args.IsValid = true; 
       return; 
      } 
     } 
     args.IsValid = false; 
    } 
</script> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:CheckBoxList runat="server" ID="cblTest"> 
      <asp:ListItem Text="Test A" Value="A"></asp:ListItem> 
      <asp:ListItem Text="Test B" Value="B"></asp:ListItem> 
     </asp:CheckBoxList> 
     <asp:CustomValidator ErrorMessage="Please select at least one.<br/>" ClientValidationFunction="cb_selectone" runat="server" /> 
     <asp:Button runat="server" ID="btnTest" Text="Submit" /> 
    </div> 
    </form> 
</body> 
</html> 
+0

謝謝......我以前試過這個。自定義驗證器的問題是,我必須爲每個需要它的控件創建一個驗證器。我需要更一般的東西 – 2012-08-16 04:25:33

+0

看看這個示例,我和你有同樣的問題但我解決了它。 http://stackoverflow.com/questions/11981229/custom-jquery-validation-function-not-firing – 2012-08-16 06:31:23

+0

不是正確的答案,但我寫了我自己的驗證框架,做了這樣的事情 – 2012-08-21 22:37:58