首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Page_ClientValidate正在多次验证。

Page_ClientValidate正在多次验证。
EN

Stack Overflow用户
提问于 2009-06-09 11:20:41
回答 8查看 32.2K关注 0票数 16

我遇到的问题是,验证摘要消息(警报)显示两次。我想不出其中的原因。

请帮帮忙。以下是代码

代码语言:javascript
复制
function validate() //javascript function
{
    if (typeof(Page_ClientValidate) == 'function') 
    {
        var isPageValid = Page_ClientValidate();
        if(isPageValid)
        {
        }
    }
}

<asp:Button ID="btn1" runat="server" OnClientClick="validate()" Text="button"
                    ValidationGroup="ContactGroup" />

<asp:ValidationSummary ID="ValidationSummary1" runat="server" DisplayMode="List" 
                    ShowMessageBox="true" ShowSummary="false" ValidationGroup="ContactGroup" />
EN

回答 8

Stack Overflow用户

发布于 2010-06-17 22:52:05

问题是,函数Page_ClientValidate接受一个输入参数,如果不指定输入,那么每个组名都会触发一次验证摘要。

在本例中,该函数触发两次:一次用于groupname="ContactGroup“,另一次用于groupname="”

你应该改变

代码语言:javascript
复制
var isPageValid = Page_ClientValidate();

代码语言:javascript
复制
var isPageValid = Page_ClientValidate('');

如果你不想指定一个ValidationGroup,或者你想指定一个组名,那么你需要像这样调用Page_ClientValidate:

代码语言:javascript
复制
var isPageValid = Page_ClientValidate('ContactGroup');
票数 23
EN

Stack Overflow用户

发布于 2010-01-18 23:00:00

首先,您应该从按钮中丢失验证,因为其中的验证组将首先调用页面上的验证,然后是包含ValidationGroup="ContactGroup"函数的OnClientClick事件,该事件将再次调用页面验证。

然后,您应该将验证组"ContactGroup“传递给Page_ClientValidate()函数,以便它知道要验证哪些控件,因为只需调用Page_ClientValidate()就会验证所有控件,而不管它们的验证组是什么(而且它可能会多次显示验证消息,这取决于您有多少验证组)。

简而言之,做这样的事情:

代码语言:javascript
复制
function validate() //javascript function
{
    if (typeof(Page_ClientValidate) == 'function') 
    {
        var isPageValid = Page_ClientValidate('ContactGroup');
        if(isPageValid)
        {
          //your custom code
        }
    }
}    

<asp:textbox id="txtMyBox" runat="server"/>
<asp:requiredFieldValidator Id="rfv1" runat="server" ControlToValidate="txtMyBox"
ValidationGroup="ContactGroup" ErrorMessage="Bad!"/>

<asp:Button ID="btn1" runat="server" OnClientClick="validate()" Text="button"/>

<asp:ValidationSummary ID="ValidationSummary1" runat="server" DisplayMode="List" 
                    ShowMessageBox="true" ShowSummary="false" ValidationGroup="ContactGroup" />
票数 5
EN

Stack Overflow用户

发布于 2010-01-27 05:43:23

只需从函数返回false并更改OnClientClick即可,如下所示:

代码语言:javascript
复制
<asp:Button ID="btn1" runat="server" OnClientClick="return validate();" Text="button" 
                        ValidationGroup="ContactGroup" /> 

        function validate() //javascript function   
        {   
            if (typeof(Page_ClientValidate) == 'function')    
            {   
                var isPageValid = Page_ClientValidate();   
                if(isPageValid)   
                {   
                }   
            }   
        return false;

} 
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/969465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档