2011-06-20 79 views
5

字段驗證我有一個非標準在我的ASP.NET形式的線沿線的提交按鈕。調用需要通過JavaScript

<a class="button" href="#" onclick="this.blur();SubmitForm();"><span>Submit</span></a> 

由於這個原因,我所需的字段驗證器不會在客戶端被調用。如何通過Javascript調用所需的字段驗證器?

或者是有沒有更好的方式來完成我所試圖做的?

回答

9

您可以在this.Check命名Page_ClientValidate了下面的代碼片段的參考

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ClientSide_Validation.aspx.cs" 
    Inherits="ClientSide_Validation" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script type="text/javascript"> 
     function performCheck() { 

      if (Page_ClientValidate()) { 
      } 

     } 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:Label ID="lbl1" runat="server" Text="Please enter some value"></asp:Label> 
     <asp:TextBox ID="txtbox1" runat="server"></asp:TextBox> 
     <asp:RequiredFieldValidator ID="valReq" ControlToValidate="txtbox1" runat="server" 
      ErrorMessage="*" Display="Dynamic"> 
     </asp:RequiredFieldValidator> 
     <input type="button" id="btnValidate" value="Submit" onclick="performCheck()" /> 
     <a href="#" onclick="performCheck();">Validate</a> 
    </div> 
    </form> 
</body> 
</html> 
+0

這將創建一個問題。 – rahularyansharma

+0

http://stackoverflow.com/a/11548526/779158發現問題的答案在這裏也適用於驗證組。 – rahularyansharma

3

看一看的client side api for ASP.Net validators。頁面上的所有驗證器均通過Page_Validators公開在Array中。你可以在一個驗證器上調用ValidatorValidate(validator)來調用它。因此,調用所有驗證您可以在網頁:

Page_Validators.forEach(ValidatorValidate); 

順便說一句,在舊的瀏覽器you'll need to extend Array使用Array.forEach

7

Page_ClientValidate觸發驗證的形式和@ gilly3所有驗證內置客戶端功能的使用顯示出來,你可以也通過循環集合來驗證它們並呼叫ValidatorValidate(validator)

但是,如果您只想驗證一個特定的驗證器,那麼您只需要爲一個項目調用ValidatorValidate(validator)

的驗證參數必須是一個DOM對象可以是棘手的,因爲元素的ID最終可能會比你,如果你正在使用母版頁或用戶控件的標記指定的完全不同。

例如

<asp:RequiredFieldValidator ID="rfvCampaignStartDate" runat="server" .../> 

成爲

<span id="cph_0_rfvCampaignFile" ...> 

我解決此得到了我的一個項目使用jQuery選擇這樣

ValidatorValidate($('[id$="rfvCampaignFile"]').get(0)); 

ASP.NET只前綴的ID創建一個獨特的名字我可以使用id$=部分選擇器來匹配以"rfvCampaignFile"結尾的任何ID,因爲我編寫了網站,我知道它不會與其他控件衝突。最後,我使用.get(0)將DOM對象引用返回爲匹配的第一個(僅在我的情況下)DOM對象。

1

如果您正在使用jQuery然後設置一個ASP.NET控件的ClientIDMode = 「靜態」,你可以讓你的代碼更易於閱讀...

ValidatorValidate($( '#MyControl'));

或非常類似的東西。當你有同一個頁面上的多個驗證組