为什么ValidatorValidate()验证页面上的所有RequiredFieldValidator控件?

jam*_*ams 3 javascript asp.net requiredfieldvalidator validation-controls

在以下代码中为什么要ValidatorValidate(v)验证RequiredFieldValidator页面上的所有控件?它应该只执行RequiredFieldValidator1不能RequiredFieldValidator2.
这是代码.

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <script type="text/javascript">
        function check() {

            var v = document.getElementById("<%=RequiredFieldValidator1.ClientID%>");
            ValidatorValidate(v);

        }
        </script>    
    </head>
    <body>
        <form id="form1" runat="server">
        <div>

            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
                ErrorMessage="RequiredFieldValidator" ControlToValidate="TextBox1"></asp:RequiredFieldValidator>
            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
                ErrorMessage="RequiredFieldValidator" ControlToValidate="TextBox2"></asp:RequiredFieldValidator>
            <br />
            <asp:Button ID="Button1" runat="server" OnClientClick="check()" Text="Check" />

        </div>

        </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Doo*_*ake 7

你需要从check()返回一些东西,否则,它正在运行它,然后通过并进行正常的页面验证.

调用ValidatorValidate()后,您可以检查验证器是否有效

function check() {

        var v = document.getElementById("<%=RequiredFieldValidator1.ClientID%>");
        ValidatorValidate(v);
if (v.isvalid)
     return true;
else
     return false;
}
Run Code Online (Sandbox Code Playgroud)

那里你确实有一个额外的}.

您还需要为OnClientClick返回一个返回值

<asp:Button ID="Button1" runat="server" OnClientClick="return check()" Text="Check" />
Run Code Online (Sandbox Code Playgroud)