2011-03-29 54 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

相关问题