【问题标题】:Javascript confirm window no postbackJavascript 确认窗口没有回发
【发布时间】:2015-11-25 16:26:35
【问题描述】:

我正在创建一个 Javascript 弹出窗口的页面,该窗口在回发时提供确认脚本,例如我在页面加载中就有这个

DotNetNuke.Framework.jQuery.RequestDnnPluginsRegistration();
string eventTarget = (this.Request["__EVENTTARGET"] == null) ? string.Empty : this.Request["__EVENTTARGET"];
string eventArgument = (this.Request["__EVENTARGUMENT"] == null) ? string.Empty : this.Request["__EVENTARGUMENT"];
cancelSelected = btnCancel_Click_Confirmed(eventTarget, eventArgument);

这个方法要求取消选中

        protected const string cancelScriptKey = "CancelScript";
        protected void Cancel_Click(object sender, EventArgs e)
        {
            Page.ClientScript.RegisterStartupScript(this.GetType(), cancelScriptKey, CoachTeamRegister.BuildConfirmScript("Are you sure you want to cancel?\nAll unsaved changes would be lost?", cancelScriptKey), true);
        }

在这种情况下,这是可行的,因为我可以使用 PageLoad 中的变量 cancelSelected 完成操作

稍后在代码中,虽然我需要在方法内部执行此过程,但在方法完成之前不回发。有没有办法创建一个确认对话框并从选择中接收布尔值而不发回?

我能找到的最接近的是Can I stop a post back by using javascripts confirm?,它讨论了我已经知道如何使用的页面上的静态按钮,客户想要一个特定情况的对话框

【问题讨论】:

    标签: javascript c# jquery asp.net


    【解决方案1】:

    我知道阻止执行的唯一方法是使用默认确认,这将阻止执行,直到从对话框收到结果。使用 JQuery 等自定义对话框时,情况并非如此。一种解决方法是通过 JS 根据您从对话框中获得的结果执行服务器端方法,使用 __DoPostBackdocument.getElementById('btnId').click();

    假设你的标记中有这个按钮

    <asp:button id="btnSave" runat="server" OnClick="btnSave_Click"/>
    

    根据结果调用服务器端事件。

         <script>
          $(function() {
            $( "#dialog-confirm" ).dialog({
              resizable: false,
              height:140,
              modal: true,
              buttons: {
                "Save": function() {
                  $( this ).dialog( "close" );
                     //Save was clicked. Call the server side event.
                     document.getElementById('btnSave clientId').click(); 
                     //Or alternatively __DoPostBack('btnSave clientId','');
                },
                Cancel: function() {
                  $( this ).dialog( "close" );
                    //Show message for the user if needed.
                }
          }
        });
      });
      </script>
    

    【讨论】:

      猜你喜欢
      • 2012-09-10
      • 2011-03-11
      • 2015-09-18
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 2012-02-20
      • 2023-03-29
      • 2011-06-09
      相关资源
      最近更新 更多