我遇到的问题是,验证摘要消息(警报)显示两次。我想不出其中的原因。
请帮帮忙。以下是代码
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" />
发布于 2010-06-17 22:52:05
问题是,函数Page_ClientValidate接受一个输入参数,如果不指定输入,那么每个组名都会触发一次验证摘要。
在本例中,该函数触发两次:一次用于groupname="ContactGroup“,另一次用于groupname="”
你应该改变
var isPageValid = Page_ClientValidate();
至
var isPageValid = Page_ClientValidate('');
如果你不想指定一个ValidationGroup,或者你想指定一个组名,那么你需要像这样调用Page_ClientValidate:
var isPageValid = Page_ClientValidate('ContactGroup');
发布于 2010-01-18 23:00:00
首先,您应该从按钮中丢失验证,因为其中的验证组将首先调用页面上的验证,然后是包含ValidationGroup="ContactGroup"
函数的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" />
发布于 2010-01-27 05:43:23
只需从函数返回false并更改OnClientClick即可,如下所示:
<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;
}
https://stackoverflow.com/questions/969465
复制相似问题