检查网页上未保存的更改的最佳方法是什么?

时间:2014-05-14 14:52:54

标签: javascript jquery html backbone.js web

我已经实现了许多接受用户输入的网页(文本输入/复选框/拖放等),用户需要点击一些保存按钮来保存所有这些更改。

我最近需要为用户实现一个通知,如果他离开当前页面而没有提交更改,我知道我可以收听beforeunload事件。我的问题是如何在不添加大量代码的情况下捕获所有这些更改?是否有一种全球方式来监控页面上发生的所有“编辑”?

我正在使用Backbone来渲染视图,并且渲染可能随时发生,因此一些插件在页面加载时监听所有“更改”事件可能无法在这里工作。

1 个答案:

答案 0 :(得分:1)

所有输入字段的事件委托。你没有包含任何代码,但假设你只使用input个元素,你可以在jQuery中使用一些逻辑(见下文),当用户与表单交互时设置一个标志:

var isModified = false;
$(document).on('click change keyup', 'input', function(e) {
 isModified = true;
});

现在,在beforeunload事件句柄中,检查标志是否已设置。