【问题标题】:window.onbeforeunload tips and trickswindow.onbeforeunload 提示和技巧
【发布时间】:2010-10-26 16:33:09
【问题描述】:

我想创建一个onbeforeunload“你已经对页面进行了编辑。留在这个页面上,离开这个页面”jQuery 插件。

插件需要:

  1. 接受包含元素。 $(".editableFieldContainer").beforeUnload()
  2. 自动检测对not(:hidden) input/textarea/selects 的更改。
  3. 如果包含元素中的元素发生更改,则提示用户留在页面上。
    • 除非页面是通过表单提交的。
    • 除非页面/用户想要取消更改,例如按下“取消”链接/按钮。

类似这样的东西(但不完全是,它缺少一些功能):

(function(){
    var changed = false;
    $.beforeUnloadCanceled = false;
    $.fn.beforeUnload = function(){
        $.beforeUnloadCanceled = true;
        return $(this).delegate("input,select,textarea", "change", function(){
            changed = true;
        });
    });
    window.onbeforeunload = function(){
        if(changed && !beforeUnloadCanceled){return "You have made edits to the page.";} 
    };
}());

是否已经有一个不错的插件可以做到这一点?

【问题讨论】:

    标签: javascript jquery jquery-plugins


    【解决方案1】:

    这可能就是您想要的。

    jquery.wtFormDirty-2.0.2.js

    【讨论】:

    • 看起来只需一点点工作就可以做到……而且代码闻起来像臭鸡蛋。但它是一个开始。谢谢!
    • 我刚做了一个更新的版本。这看起来比旧的更好.. wt-plugins.googlecode.com/files/jquery.wtFormDirty-2.js
    • 我会将此标记为已接受的答案...但首先您必须修复选择代码。当代码不起作用时,我不希望将来有人将此视为已接受的答案。 :-)
    • 还是不太对劲。我现在正在整理一个修复程序。完成后我会发布它。
    猜你喜欢
    • 2010-09-16
    • 1970-01-01
    • 2011-02-10
    • 2011-01-13
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多