Page_ClientValidate多次验证.

16 javascript asp.net validation

问题是,验证摘要消息(警报)显示两次.我无法弄清楚原因.

请帮忙.这是代码

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" />
Run Code Online (Sandbox Code Playgroud)

bas*_*gio 23

问题是函数Page_ClientValidate接受一个输入参数,如果你没有指定输入,那么validationsummary每个groupname触发一次.

在您的情况下,该函数触发两次:一次用于groupname ="ContactGroup",另一次用于groupname =""

你应该改变

var isPageValid = Page_ClientValidate();
Run Code Online (Sandbox Code Playgroud)

var isPageValid = Page_ClientValidate('');
Run Code Online (Sandbox Code Playgroud)

如果您不想指定ValidationGroup,或者如果要指定组名,则需要像这样调用Page_ClientValidate:

var isPageValid = Page_ClientValidate('ContactGroup');
Run Code Online (Sandbox Code Playgroud)


Tes*_*t09 5

嘿那里.首先,您应该从按钮中松开ValidationGroup ="ContactGroup",因为其中的验证组将首先调用页面上的验证,然后是包含validate函数的OnClientClick事件,该函数将再次调用页面验证.

然后,您应该将验证组"ContactGroup"传递给Page_ClientValidate()函数,以便它知道要验证哪些控件,因为只需调用Page_ClientValidate()将验证所有控件,而不管其验证组如何(并且它可能会多次显示验证消息,取决于您拥有的验证组数量).

总之这样做:

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" />
Run Code Online (Sandbox Code Playgroud)


Can*_*var 1

删除按钮的单击事件,我认为这会强制进行第二次验证。