0
通过使用定时器自动保存更改的电子邮件形式,这工作正常。但是表单提交后似乎会出现一场竞赛,尤其是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');
});
它看起来像你用'clearTimeout(timeoutId);'禁用自动保存,或者我误会了吗?你在提交处理程序中的哪个位置尝试禁用自动保存? – David
提交后可能正在等待XHR请求。尝试将'$ .post'设置为全局变量,然后在与'deleted = true'相同的位置调用'myVar.abort()'来取消任何待处理的草稿保存请求。 – sheng
@David'deleted' var处理这个 – sheng