如何将自定义Javascript添加到asp.net客户端验证功能?

如何将自定义Javascript添加到asp.net客户端验证功能?,asp.net,validation,client-side-validation,Asp.net,Validation,Client Side Validation,我有一个用于的asp.net web,其中有几个验证控件: <div class="form-row"> <label>Email</label> <asp:TextBox ID="txtUserName1" runat="server" onchange="validate(this)"> </asp:TextBox> <asp:RequiredFieldValid

我有一个用于的asp.net web,其中有几个验证控件:

<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"

    }
函数validateForm(){
$(“输入[type=text]、输入[type=password]、“#registerForm”)。每个(函数(){
验证(这个)
});
}
功能验证(控制){
//更改边框的颜色
对于(var i=0;i
您可以使用自定义验证器


它们的工作原理与其他asp.net验证程序一样,您可以编写处理验证并设置IsValid标志的函数。这将反过来允许/防止回发

页面没有验证,所以javascript可以工作,但它认为所有控件都有效,我添加了这个

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

以验证页面

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

我正在努力使这些功能正常工作,但评论并不十分令人鼓舞!当将自定义验证器与所需的验证器结合使用时,javascript函数不会失效。我没法让它工作。另外,我已经在页面上有7个控件,每个控件都有1-3个验证程序,验证可以根据需要工作,我只想将文本框边框变成红色。我是否需要替换所有验证控件并为每个控件编写新的js函数?但愿我用的是MVC!使用此选项标记带有边框函数MarkRequiredFields()的无效文本框({var validator=document.getElementById(“”);var control=document.getElementById(validator.controltovalidate);if(!validator.IsValid)control.style.border=“3px solid Red”;}