javascript - 如何为单页应用程序实现 isDirty 标志 onLeave?

标签 javascript asp.net-mvc asp.net-mvc-4 singlepage

我有一个用 MVC4 编写的单页应用程序,它使用 pjax()将 html 推送到我页面中的各个 s 中。我有一个子表单,允许用户编辑数据,如果用户更改数据,则会在 javascript 中设置 isDirty 标志,以触发页面底部有未保存的更新的警报。当用户尝试离开页面而不保存时,我还想实现额外的警告。如果我使用像这样的传统 onbeforeunload 函数

window.onbeforeunload = function() {
    if (isDirty) {
        return 'You have unsaved changes!';
    }
    return null;
};

如果我尝试关闭页面或完全离开该网站,它会调用警报,但如果用户单击我的链接之一,用一些不同的信息重新填充它,它不会触发,因为您实际上并没有离开这一页。我如何构建它,以便这些 pjax() 链接之一会引发类似于关闭页面时的警报?

最佳答案

您可以订阅在 pjax 请求之前触发的全局事件:

$(document).on('pjax:beforeSend', function() { 
    if (isDirty) {
        return confirm('You have unsaved changes! Are you sure you want to continue?');
    }
    return true;
});

关于javascript - 如何为单页应用程序实现 isDirty 标志 onLeave?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10655460/

相关文章:

javascript - NodeJS 中的客户端/服务器操作检测

javascript - RegEx JS - 如何获取 : and defore/or end of a string 之后的所有内容

jquery - 如何从ajax数据中选择行

asp.net - 在asp.net mvc中提供动态角色(角色不固定,不断更新)

IntelliSense 中的 JavaScript 命名空间引用

c# - 从 MVC HttpPost 将错误返回给 jQuery

Javascript 减去数字不准确 - 为什么

c# - 当我编辑代码时 ASP.NET 没有任何变化

c# - 如何转换以下小数?到字符串 ("F2")

javascript - 相同的动画在不同的方向上花费的时间更长