Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在提交时关闭表单自动保存_Javascript_Jquery - Fatal编程技术网

Javascript 在提交时关闭表单自动保存

Javascript 在提交时关闭表单自动保存,javascript,jquery,Javascript,Jquery,通过一个用于撰写电子邮件的表单,我们可以使用计时器自动保存更改。这个很好用。但提交表单时似乎存在竞争,尤其是IE11。在提交时,我们希望在提交之前关闭自动保存。在生产环境中,我们会同时调用服务器来保存草稿和提交表单 var timeoutId; var deleted = false; // setup a call to onFormChange when a change happens $('form input, form textarea').on('input propertych

通过一个用于撰写电子邮件的表单,我们可以使用计时器自动保存更改。这个很好用。但提交表单时似乎存在竞争,尤其是IE11。在提交时,我们希望在提交之前关闭自动保存。在生产环境中,我们会同时调用服务器来保存草稿和提交表单

var timeoutId;
var deleted = false;

// setup a call to onFormChange when a change happens
$('form input, form textarea').on('input propertychange change', function() {
    onFormChange();
});

function onFormChange() {
  // call saveDraft 1 second after changes happen
  clearTimeout(timeoutId);
  timeoutId = setTimeout(function() {saveDraft();}, 1000);
}

// saveDraft saves the current form state in the draft.
function saveDraft() {
  if (deleted == true) {
    // don't save because we're done
    return;
  }
  var fromval = $("#from").val();
  var subject = $("#subject").val();
  var body = $("#body").val();

  //
  // upload is done here using $.post()
  //
}

$('form').submit(function(e){
  // stop saving drafts when we do a submit
  deleted = true;
  if( $(this).hasClass('form-submitted') ){
    e.preventDefault();
    return;
  }
  $(this).addClass('form-submitted');
});
$('form').submit(function(e){
  // stop saving drafts when we do a submit
  deleted = true;
  if( $(this).hasClass('form-submitted') ){
    e.preventDefault();
    return;
  }
  $(this).addClass('form-submitted');
  clearTimeout(timeoutId);
});

提交表单时停止计时器

var timeoutId;
var deleted = false;

// setup a call to onFormChange when a change happens
$('form input, form textarea').on('input propertychange change', function() {
    onFormChange();
});

function onFormChange() {
  // call saveDraft 1 second after changes happen
  clearTimeout(timeoutId);
  timeoutId = setTimeout(function() {saveDraft();}, 1000);
}

// saveDraft saves the current form state in the draft.
function saveDraft() {
  if (deleted == true) {
    // don't save because we're done
    return;
  }
  var fromval = $("#from").val();
  var subject = $("#subject").val();
  var body = $("#body").val();

  //
  // upload is done here using $.post()
  //
}

$('form').submit(function(e){
  // stop saving drafts when we do a submit
  deleted = true;
  if( $(this).hasClass('form-submitted') ){
    e.preventDefault();
    return;
  }
  $(this).addClass('form-submitted');
});
$('form').submit(function(e){
  // stop saving drafts when we do a submit
  deleted = true;
  if( $(this).hasClass('form-submitted') ){
    e.preventDefault();
    return;
  }
  $(this).addClass('form-submitted');
  clearTimeout(timeoutId);
});

提交表单时停止计时器

var timeoutId;
var deleted = false;

// setup a call to onFormChange when a change happens
$('form input, form textarea').on('input propertychange change', function() {
    onFormChange();
});

function onFormChange() {
  // call saveDraft 1 second after changes happen
  clearTimeout(timeoutId);
  timeoutId = setTimeout(function() {saveDraft();}, 1000);
}

// saveDraft saves the current form state in the draft.
function saveDraft() {
  if (deleted == true) {
    // don't save because we're done
    return;
  }
  var fromval = $("#from").val();
  var subject = $("#subject").val();
  var body = $("#body").val();

  //
  // upload is done here using $.post()
  //
}

$('form').submit(function(e){
  // stop saving drafts when we do a submit
  deleted = true;
  if( $(this).hasClass('form-submitted') ){
    e.preventDefault();
    return;
  }
  $(this).addClass('form-submitted');
});
$('form').submit(function(e){
  // stop saving drafts when we do a submit
  deleted = true;
  if( $(this).hasClass('form-submitted') ){
    e.preventDefault();
    return;
  }
  $(this).addClass('form-submitted');
  clearTimeout(timeoutId);
});

看起来您使用
clearTimeout(timeoutId)禁用了自动保存,还是我弄错了?您在提交处理程序中的什么位置尝试禁用自动保存?提交后可能会处理挂起的XHR请求。尝试将
$.post
设置为全局变量,然后在
deleted=true
的同一位置调用
myVar.abort()
以取消任何挂起的草稿保存请求。@David the
deleted
var处理此问题。看起来您使用
clearTimeout(timeoutId)禁用了自动保存功能,还是我弄错了?您在提交处理程序中的什么位置尝试禁用自动保存?提交后可能会处理挂起的XHR请求。尝试将
$.post
设置为全局变量,然后在
deleted=true
的同一位置调用
myVar.abort()
,以取消任何挂起的草稿保存请求。@David the
deleted
var处理此问题,错过了此问题+1用于通知计时器。因此,最佳的解决方案是清除超时并取消任何挂起的XHR。啊,错过了+1用于通知计时器。因此,最佳解决方案是清除超时并取消任何挂起的XHR。