我有大约 100 个输入字段的表单(文本框、文本区域、单选框、复选框、文件等)。
当用户离开页面时,我需要知道某些字段是否已被修改以运行自动保存例程。
1.-form_has_been_modified
在任何字段更改时设置:
var form_has_been_modified = 0;
$("form[id^='my_form']").each(function(){
$(":input", this).live("change", function() {
form_has_been_modified = 1;
});
});
2.- 如果某些字段被更改,警告用户:
window.onbeforeunload = function (e) {
if ( ! form_has_been_modified){
return;
}
var message = "This page is asking you to confirm that you want to leave - data you have entered may not be saved.";
var e = e || window.event;
// For IE and Firefox prior to version 4
if (e) {
e.returnValue = message;
}
// For Safari
return message;
};
问题:
a.- 这段代码(第 1 部分)会使浏览器的用户变得太慢吗?
b.- 之前的代码运行良好。但在textbox/textarea
输入类型中,change
事件仅在元素失去焦点时发生。因此,例如,此代码不能防止reload page
操作。是否存在另一个更好的处理程序change
来解决这个缺陷?