如何在30分钟后停止自动保存

How to stop Autosave after 30 mins or so?

本文关键字:保存 30分钟      更新时间:2023-09-26

我正在使用jQuery自动保存表单。这个表单将保持每1分钟保存一次数据。但是,如果用户打开浏览器一天,我不想向数据库发送垃圾邮件。因此,如果没有更改或浏览器已打开30分钟,我想杀死自动保存选项。

反正我可以杀死这个自动保存功能?

$("form input").on("input propertychange change", function() {
  var start = $.now();
  setTimeout(autoSaveForm(start), 10000);
});
function autoSaveForm(start) {
  var uuid = $("#uuid").html();
  $.ajax({
    type: "POST",
    url: "trailers/" + uuid + "/save-draft",
    data: $("form").serialize(),
    success: function() {
    }
  });
  if ($.now() - start <= 600000) {
    setTimeout(autoSaveForm(start), 60000);
  }
  else {
    return;
  }
}

是的,你可以通过clearartimeout来取消超时。

此外,您还需要设置一个时间戳变量,这样您的autoSaveForm将检查自该时间戳以来30分钟是否没有过去,然后它可以继续保存表单。如果时间已过,只需停止使用return执行,并且不会设置下一个setTimeout

更好的方法是改变您的方法,并且只在对表单进行任何更改后保存数据。您可以通过侦听表单输入上的keyupchange事件来做到这一点。如果您担心自动保存功能会过于频繁地被触发,那么您应该让它的运行频率不要超过几秒钟。这是通过节流函数完成的,例如在下划线库中:_.throttle .

下面是一些代码:http://jsfiddle.net/yuraji/4pnbr4bd/-它只在用户输入时更新,并且从不超过1秒。