我的页面中有验证控件,并且我正在使用验证摘要消息框来显示验证消息,下面显示的 javascript 函数对我有用,但问题是我在按钮的 OnClientClick 事件上以及何时使用此 javascript 函数我单击表单控件未填充的按钮,它按预期显示验证摘要消息框,但是当我关闭摘要框时,它会再次显示,我需要关闭消息框才能消失,这意味着我每次都必须单击两次。有人可以纠正我我做错了什么吗?
这就是我正在做的事情:-
<asp:Button ID="SubmitButtonOne" runat="server" Text="Submit" OnClick="SubmitButtonOne_Click"
ValidationGroup="Cases" ClientIDMode="Static" OnClientClick="PleaseWaitShow()" />
这是 JavaScript 函数:
function PleaseWaitShow() {
var isPageValid = true;
// Do nothing if client validation is not active
if (typeof (Page_Validators) != "undefined") {
if (typeof (Page_ClientValidate) == 'function') {
isPageValid = Page_ClientValidate();
}
}
if (isPageValid) {
document.getElementById('SubmitButtonOne').value = "Processing...";
}
}
后台代码:
protected void SubmitButtonOne_Click(object sender, EventArgs e)
{
try
{
// some functionality
}
catch (Exception)
{
//show errror message
}
}
最佳答案
这是预期的行为。
一旦 Page_ClientValidate 由于您在 PleaseWaitShow 方法内的显式调用而被触发,第二次是通过单击 PostBack 按钮进行隐式调用。
因此您会看到两次 ValidationSummary 消息框。
我没有解决方案来规避此问题,但如果出现问题,我会更新。
注意:我想指出的一件事是,由于您的提交按钮上有ValidationGroup="Cases",因此您应该将其传递给 Page_ClientValidate 方法。
更新 1:我能想到的一种方法是尝试这样的事情:
1:OnClientClick="return PleaseWaitShow();"
2:从 PleaseWaitShow() 返回 isPageValid:
function PleaseWaitShow() {
var isPageValid = true;
....
....
....
return isPageValid;
}
关于javascript - 验证摘要消息弹出两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6048936/