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