【问题标题】:How to Trigger LinkButton Postback after Confirmation using jQuery UI Dialog?使用 jQuery UI 对话框确认后如何触发 LinkBut​​ton 回发?
【发布时间】:2013-12-03 01:12:02
【问题描述】:

我希望 LinkBut​​ton 弹出一个 jQuery UI 对话框,提示用户确认操作。如果用户点击 OK,那么我希望通过发回服务器来继续操作。

我最终创建了两个链接:一个是调用我的确认对话框的常规 HTML。另一个是隐藏的常规 LinkBut​​ton 服务器控件,如果用户确认对话框,我想调用它。

两个链接如下所示:

<a id="preEnterOperations" href="#">
    Enter Operations
</a>
<asp:LinkButton ID="lnkEnterOperations" runat="server"
    OnClick="lnkEnterOperations_Click" Style="display:none">
    Enter Operations
</asp:LinkButton>

这是我的 JavaScript:

$(function () {
    $('#preEnterOperations').on('click',
        function (e) {
            var confirmDialog = $('#enterOperationsConfirmationDialog');
            confirmDialog.dialog({
                modal: true,
                buttons: {
                    Ok: function () {
                        confirmDialog.dialog("close");
                        confirmDialog.data('confirmed', '1');
                        $('#<%= lnkEnterOperations.ClientID %>').click();
                    },
                    Cancel: function () {
                        confirmDialog.dialog("close");
                    }
                }
            });
            return false;
        });
});

一切似乎都是正确的。确认对话框按预期弹出。如果用户点击 Ok,我可以看到我的 Ok 处理程序运行。但是$('#&lt;%= lnkEnterOperations.ClientID %&gt;').click(); 行没有任何作用!我在这条线上尝试了很多变化,效果总是一样的:什么都没有。

如果用户确认对话框,谁能帮我看看如何执行 LinkBut​​ton 回发?

【问题讨论】:

    标签: javascript jquery jquery-ui webforms jquery-ui-dialog


    【解决方案1】:

    您可以替换以下行:

    $('#<%= lnkEnterOperations.ClientID %>').click();
    

    与:

    __doPostBack('<%= lnkEnterOperations.UniqueID %>', '');
    

    这应该可以解决问题。

    【讨论】:

      【解决方案2】:
                      Ok: function () {
                          confirmDialog.dialog("close");
                          confirmDialog.data('confirmed', '1');
                          $('#<%= lnkEnterOperations.ClientID %>').click(function(){
                               __doPostBack('<%= lnkEnterOperations.UniqueID %>', '');
                          });
                      },
                      Cancel: function () {
                          confirmDialog.dialog("close");
                      }
      

      这可能会有所帮助。

      【讨论】:

      • 这是做什么的?看起来它每次都会创建一个新的点击处理程序。但是在用户再次单击它之前不会调用处理程序。并且服务器控件已经有了自己的处理程序。这是一个错误吗?
      【解决方案3】:

      您可以替换“$('#').click();” 与

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-17
        • 1970-01-01
        • 2012-04-02
        • 2011-05-07
        • 2011-03-31
        • 1970-01-01
        • 1970-01-01
        • 2020-12-26
        相关资源
        最近更新 更多