制表符:我正在使用手动验证模式,但如果无效,我想阻止单元格

Tabulator: I am using validation mode manual but I want to block on cell if not valid

我正在使用 Tabulator 验证模式 ManualHighlight。但同时我也对阻塞功能感兴趣。但由于某些原因,我不想检查特定行编辑的所有 Validators,这就是我使用突出显示或手动模式的原因。

所以我的问题是当在同一个单元格上调用 ValidationFailed 时如何阻止用户(在某些情况下)

还原值

如果您想还原该值,可以混合使用 getOldValuesetValue 传递给 validationFailed 回调的单元格组件上的函数,以检索单元格的旧值并将其设置回来。

您可能希望在单元格上调用 *clearValidation 函数来清除无效标志,因为值已被重置。

var table = new Tabulator("#example-table", {
    validationFailed:function(cell, value, validators){
        cell.setValue(cell.getOldValue());
        cell.clearValidation();
    },
});

Re-triggering 编辑

如果您想让用户留在单元格上以继续编辑,那么您应该在单元格组件上调用 edit 函数

var table = new Tabulator("#example-table", {
    validationFailed:function(cell, value, validators){
        setTimeout(() => { //give the edit time to finish before retriggering
            cell.edit(); //retrigger the edit
        }, 100)
    },
});

阻止验证模式

我假设您想要采用这种方法,因为您想要在不阻止编辑的情况下将某些列标记为无效,而有些您确实想要阻止。如果你想阻止所有无效的编辑,那么你应该使用 blocking 验证模式:

var table = new Tabulator("#example-table", {
    validationMode:"highlight", //highlight cells with validation errors but dont stop the edit
});