javascript - 验证摘要消息弹出两次

标签 javascript asp.net validationsummary

我的页面中有验证控件,并且我正在使用验证摘要消息框来显示验证消息,下面显示的 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/

相关文章:

javascript - 从具有父字段的平面列表构造层次树?

javascript - 计算的 Observable 未更新

javascript - 有 Angular 。如何在指令内部编译指令?

c# - 发布到 Azure 的 Asp.Net 应用程序仅显示 "Your App Service app has been created"

asp.net-mvc - 如何在验证摘要中添加图像以及错误消息?

javascript Sencha touch 仅在浏览器中不显示设备上的数据

c# - ImageButton奇怪的 Action

c# - AntiXSS 不会清理未封闭的 html 标签

asp.net - 可以在 global.asax 或 web.config 中阻止验证摘要消息框的内容