0

我有一个带有一些验证控件的 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"

    }
4

3 回答 3

1

该页面未验证,因此 javascript 正在运行,但它认为所有控件都有效,我添加了这个

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

验证页面。

于 2011-03-29T15:31:25.797 回答
0

您可以使用自定义验证器

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

它们就像任何其他 asp.net 验证器一样工作,接受您编写处理验证并设置 IsValid 标志的函数。这反过来将允许/防止回发发生。

于 2011-03-29T14:33:00.373 回答
0

1- 使用 CustomValidator,因此您所有的验证逻辑都将驻留在您的 JavaScript 代码中,假设您想要验证 TextBox 的数字 > 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 设置为 ="Validate"(JavaScript 函数)

当您尝试进行任何回发时,会评估 Page.Validators 集合,因此您的 CustomValidator

于 2011-03-30T06:32:31.087 回答