2011-03-29 64 views
0

我有一個asp.net網站與上幾個驗證控件:如何將自定義Javascript添加到asp.net客戶端導致驗證功能?

<div class="form-row"> 
    <label>Email</label> 
      <asp:TextBox ID="txtUserName1" runat="server" onchange="validate(this)"> </asp:TextBox> 
      <asp:RequiredFieldValidator ID="reqUserName1" runat="server" ControlToValidate="txtUserName1" 
       ErrorMessage="- The email address field is required" Text="*" CssClass="error_star" Width="10px" ValidationGroup="Register"></asp:RequiredFieldValidator> 
      <asp:RegularExpressionValidator ID="RegularExpressionValidator2" CssClass="error_star" runat="server" ErrorMessage="- Invalid Email Address" Text="*" 
         ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ControlToValidate="txtUserName1" 
         ValidationGroup="Register"></asp:RegularExpressionValidator> 
     </div> 

我有一個按鈕提交表單

<asp:Button ID="cmdSubmit" runat="server" Text="Create Account" CssClass="small-button" 
      ValidationGroup="Register" CausesValidation="true" OnClientClick="validateForm()" OnClick="cmdSubmit_Click" /> 

我第一次按下按鈕一些客戶端驗證運行並且我的validateForm()方法未被命中。對於後來的時間我點擊提交按鈕我的自定義驗證工作正常。

如何將一些自定義JavaScript附加到客戶端驗證?

這裏」的JavaScript

function validateForm() { 
     $("input[type=text], input[type=password]", "#registerForm").each(function() { 
      validate(this) 
     }); 
    } 

    function validate(control) { 
     // Change the colour of the border 
     for (var i = 0; i < control.Validators.length; i++) { 
      if (!control.Validators[i].isvalid) { 
       control.style.border = "1px solid red" 
       return; 
      } 
     } 
     control.style.border = "1px solid #E1D7CE" 

    } 

回答

1

頁沒有確認,所以JavaScript是工作,但它認爲所有的控制在有效的,我說這個

if (!Page_ClientValidate("Register")) { 
      Page_ClientValidate("Register") 
     } 

驗證頁面。

0

您可以使用自定義的驗證

http://asp.net-tutorials.com/validation/custom-validator/

他們的工作就像任何其他的asp.net驗證,接受你寫的函數,句柄驗證並設置IsValid標誌。這將反過來允許/防止回發發生。

+0

我努力讓這些工作,意見[這裏](H ttp://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator.clientvalidationfunction.aspx)並不是很令人鼓舞! – Axe 2011-03-29 15:07:43

0

1使用的CustomValidator,因此所有您的驗證邏輯將駐留在你的JavaScript代碼,可以說你想驗證文本框的數量> 12,JavaScript代碼會是這樣:

 function Validate(src, eventargs) 
     { 
      var control = Document.GetElementByID(src); 
      if(control.value > 12) 
      eventargs.IsValid = true; 

    else 
    eventargs.IsValid = false; 


     } 

2-使用的CustomValidator的ClientValidationFunctionProperty設置=「驗證」(JavaScript函數)

當您嘗試做任何回傳,那麼Page.Validators收集評估,所以你的CustomValidator

+0

將自定義驗證程序與必需的驗證程序一起使用時,javascript函數並不穩定。我無法得到這個工作。此外,我已經在頁面上有7個控件,每個都有1-3個驗證器,驗證按需要工作,我只想將文本框邊框變爲紅色。我是否需要替換所有的驗證控件併爲每個驗證控件編寫新的js函數?希望我使用MVC! – Axe 2011-03-30 09:40:32

+0

使用此標記來標記具有邊框的無效文本框 函數MarkRequiredFields() var validator = document.getElementById('<%= RequiredFieldValidator1.ClientID%>'); var control = document.getElementById(validator.controltovalidate); (!validator.IsValid) control.style.border =「3px solid Red」; } – Saeedouv 2011-03-31 22:15:04