我有一个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
以获得一致的行为?
答案 0 :(得分:0)
将此添加到“确定”操作中:
var href = $(obj).attr("href");
window.location.replace(href);
window.navigator.location(href);
return true;
并删除__postback行
它和我一起工作