使用自定义jQuery预防回发确认asp:LinkBut​​ton上的实现

时间:2014-03-19 21:27:29

标签: javascript asp.net vb.net jquery-ui

我有一个LinkButton在服务器上执行并更改页面。从历史上看,我有一个confirm消息框,执行OnClientClick以确保用户想要离开。

到目前为止看起来像这样:

ASP.NET

<asp:LinkButton runat="server" ID="ChangePage" Text="Change page"
                OnClientClick="confirm('are you sure you want to change page?');" 
                OnClick="Navigate" >
    Change Page
</asp:LinkButton>

HTML输出

<a id="MainContent_ChangePage" 
   onclick="confirm('are you sure you want to change page?');"
   href="javascript:__doPostBack('ctl00$MainContent$ChangePage','')" >
    Change page
</a>

这一切都很好。麻烦的是我试图用更漂亮的jQuery-UI实现替换所有的确认框,如下所示:

window.confirm = function (message, obj) {
    $('<div/>')
    .attr({ title: 'Webpage Confirm'})
    .html(message)
    .dialog({
        resizable: false,
        modal: true,
        width: 500,
        buttons: {
            "OK": function () {
                __doPostBack(obj, '');
                $(this).dialog('close');
                return true;
            },
            "Cancel": function () {
                $(this).dialog('close');
                return false;
            }
        }
    });
};

我认为这与confirm对话框同步同步的事实有关,而jQuery对话框异步。但是,我认为设置modal: true会导致它等待响应。

如何覆盖window.confirm以获得一致的行为?

1 个答案:

答案 0 :(得分:0)

将此添加到“确定”操作中:

    var href = $(obj).attr("href");
window.location.replace(href);
window.navigator.location(href);
return true;

并删除__postback行

它和我一起工作