【问题标题】:Prevent Postback with custom jQuery confirm implementation on asp:LinkButton在 asp:LinkBut​​ton 上使用自定义 jQuery 确认实现防止回发
【发布时间】:2014-04-26 10:35:33
【问题描述】:

我有一个在服务器上执行并更改页面的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 以获得一致的行为?

【问题讨论】:

  • 删除__doPostBack(obj, '');(你的链接会自己做)并做:OnClientClick="return AreYouSure('my message');当然使用AreYouSure函数......不是一个好主意吗?如果你想覆盖 confirm 方法,你需要跨浏览器,这可能会通过你...
  • 已更改为OnClientClick="return AreYouSure('message');",但仍会立即回发。如果我在.dialog() 声明之后添加任何代码行,它们会立即执行。所以我认为在“确定”或“取消”功能甚至有机会执行之前,它已经顺利到达服务器。
  • 然后使用普通链接,并在代码中的位置调用__doPostBack 并传递 id 名称... - 查看源代码并在模态确认中使用该调用:@ 987654321@

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


【解决方案1】:

将此添加到 OK 操作:

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

并删除 __postback 行

它适合我

【讨论】:

    猜你喜欢
    • 2010-09-15
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多