16. 編輯器:欄位仍在處理中
如果嘗試提交表單時,整個表單的某個欄位處於處理狀態,則 Editor 將不會提交表單。這是為了允許處理完成並確保資料完整性。
錯誤
欄位仍在處理中
將在嘗試提交表單時,表單或表單中的某個欄位處於處理狀態時發生。
意義
如果 Editor 偵測到某個欄位處於「處理中」狀態 (field().processing()
),則表示表單中仍有資料需要更新(可能是來自 Ajax 計算),因此不應提交表單。Editor 將取消提交並等待處理完成。
解決方案
這個問題最常見的原因是使用了 dependent()
並忘記傳回要讓 Editor 處理的物件,或是沒有使用其回呼函式。例如
editor.dependent('myField', function () {
editor.field('otherField').val(1);
});
將永遠不會完成。它應該是
editor.dependent('myField', function () {
editor.field('otherField').val(1);
return {};
});
或
editor.dependent('myField', function () {
return {
values: {
otherField: 1
}
};
});
同樣地,如果使用非同步行為(例如 Ajax),您需要呼叫回呼函式,讓 Editor 知道處理動作已完成
editor.dependent('myField', function(val, data, cb) {
$.ajax({
url: '/api/dependent',
data: data,
success: function (json) {
cb(json);
}
})
});