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);
        }
    })
});