如何使用jQuery UI Dialog确认后触发LinkBut​​ton回发?

时间:2013-12-03 01:12:03

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

我希望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处理程序运行。但是行$('#<%= lnkEnterOperations.ClientID %>').click();没有做任何事情!我在这条线上尝试了很多变化,效果总是一样的:没什么。

如果用户确认对话框,有人可以帮我看看如何执行LinkBut​​ton回发吗?

3 个答案:

答案 0 :(得分:3)

您可以替换以下行:

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

使用:

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

这应该可以解决问题。

答案 1 :(得分:2)

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

可能这可以帮到你。

答案 2 :(得分:0)

您可以替换“ $('#&lt;%= lnkEnterOperations.ClientID%&gt;')。click(); ” 使用&lt;%= Page.ClientScript.GetPostBackEventReference(lnkEnterOperations,“”)%&gt;