验证摘要消息弹出两次
Validation summary message pops up twice
我的页面中有验证控件,我正在使用验证摘要消息框来显示验证消息,下面显示的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
}
}
预期行为。
一旦由于您在 PleaseWaitShow 方法中的显式调用而触发Page_ClientValidate,第二个是通过回发按钮单击进行的隐式调用。
因此,您会看到两次"验证摘要"消息框。
我没有规避此问题的解决方案,但如果发生某些事情,我会更新。
注意:我想指出的一件事是,由于提交按钮上有 ValidationGroup="Cases",您应该将其传递给您的Page_ClientValidate方法。
更新1:我能想到的一种方法是尝试这样的事情:
1: OnClientClick="return PleaseWaitShow();"
2: 返回 isPageValid from PleaseWaitShow():
function PleaseWaitShow() {
var isPageValid = true;
....
....
....
return isPageValid;
}
不,这不是预期的行为。相反,这是验证JS代码 ASP.NET 错误。
ValidationSummaryOnSubmit
函数遍历所有摘要,对于每个摘要,循环遍历所有验证器。如果未指定 group,则附加每个验证器的消息,导致 2 (3, 4, 5?) 重复相同的消息。
我通过修复函数解决了这个问题(盯着第 53 行左右):
....
for (i = 0; i < Page_Validators.length; i++)
{
var validator = Page_Validators[i];
if (validator.validationGroup != null && summary.validationGroup != null)
{
if (validator.validationGroup != summary.validationGroup) continue;
}
if (!validator.isvalid && typeof (validator.errormessage) == "string")
{
s += pre + validator.errormessage + post;
}
}
....
如果使用Page_ClientValidate方法,则应将原因验证设置为false。 CausesValidation="false"
因为Page_ClientValidate已经为您验证的按钮或控件执行此操作
请删除按钮的验证组。验证摘要的唯一用户喜欢:
<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="rqvName" runat="server" ControlToValidate="txtName" ErrorMessage="Please enter Name" ValidationGroup="SaveName"> </asp:RequiredFieldValidator>
<asp:Button ID="btnSave" runat="server" OnClientClick="DisableButton();" Text="Save this Name" ></asp:Button>
<asp:ValidationSummary ID="valSaveName" runat="server" ValidationGroup="SaveName" ShowMessageBox="true" ShowSummary="false" />
谢谢
- Meteor Router数据函数被调用两次
- 从MySQL数据库中获取输入数据需要两次页面刷新
- Module.start()已激发两次
- Jquery点击事件必须点击两次
- Append元素在运行两次函数后不显示
- 防止双击执行两次jQuery post请求
- 我必须点击两次才能激活任何按钮操作(离子/角度)
- 单击jQuery会激发两次
- 如何避免在树上走两次
- button.单击两次删除附加操作后不工作
- addEventListener对所有元素都有效,但有时它会提醒消息两次或多次
- Phonegap PushPlugin 消息事件被调用两次
- yii在提交按钮中显示确认消息两次
- 彗星消息发送了两次
- Chrome扩展后台消息监听器触发两次
- 套接字.IO发送消息两次
- 表单发送消息两次
- onbeforeunload消息出现两次(ie浏览器)
- 使用 node.js 创建 IRC 机器人.尽管函数只被调用一次,但消息发送两次
- 验证摘要消息弹出两次