Javascript 为什么ValidatorValidate()验证页面上所有必需的FieldValidator控件?

Javascript 为什么ValidatorValidate()验证页面上所有必需的FieldValidator控件?,javascript,asp.net,requiredfieldvalidator,validation-controls,Javascript,Asp.net,Requiredfieldvalidator,Validation Controls,在下面的代码中,为什么ValidatorValidate(v)验证页面上的所有RequiredFieldValidator控件?它应该只执行RequiredFieldValidator1而不是RequiredFieldValidator2下面是代码 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script type="text/javascript"> func

在下面的代码中,为什么
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>

函数检查(){
var v=document.getElementById(“”);
确认(五);
}


发生这种情况的原因是,一旦单击该按钮,就会在回发时对所有这些内容进行验证。您需要按
ValidationGroup
或使用
returnfalse对它们进行分组
检查()
停止回发

或者,您也可以将
RequiredFieldValidator
替换为
CustomValidator
,并根据需要执行条件检查

如果您真的想进行客户端验证程序处理,请查看

此页面详细介绍了客户端验证对象模型,该模型有一些JavaScript函数来处理条件求值。查看一个例子,说明一个人是如何按照这些思路做的


你具体想做什么?可能有人可以帮助您获得正确的设置。

您的
脚本格式不正确

<head>
    <script type="text/javascript">
         function check() {
             var v = document.getElementById("<%=RequiredFieldValidator1.ClientID%>");
             ValidatorValidate(v);
         }
   </script>    
</head>

您需要从check()返回一些内容,否则,它将运行它,然后通过并执行正常的页面验证

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

function check() {

        var v = document.getElementById("<%=RequiredFieldValidator1.ClientID%>");
        ValidatorValidate(v);
if (v.isvalid)
     return true;
else
     return false;
}
函数检查(){
var v=document.getElementById(“”);
确认(五);
如果(v.isvalid)
返回true;
其他的
返回false;
}
你也有一个额外的}

您还需要返回OnClientClick

<asp:Button ID="Button1" runat="server" OnClientClick="return check()" Text="Check" />

<asp:Button ID="Button1" runat="server" OnClientClick="return check()" Text="Check" />