制表符:我正在使用手动验证模式,但如果无效,我想阻止单元格
Tabulator: I am using validation mode manual but I want to block on cell if not valid
我正在使用 Tabulator
验证模式 Manual
或 Highlight
。但同时我也对阻塞功能感兴趣。但由于某些原因,我不想检查特定行编辑的所有 Validators
,这就是我使用突出显示或手动模式的原因。
所以我的问题是当在同一个单元格上调用 ValidationFailed
时如何阻止用户(在某些情况下)
还原值
如果您想还原该值,可以混合使用 getOldValue 和 setValue 传递给 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
});
我正在使用 Tabulator
验证模式 Manual
或 Highlight
。但同时我也对阻塞功能感兴趣。但由于某些原因,我不想检查特定行编辑的所有 Validators
,这就是我使用突出显示或手动模式的原因。
所以我的问题是当在同一个单元格上调用 ValidationFailed
时如何阻止用户(在某些情况下)
还原值
如果您想还原该值,可以混合使用 getOldValue 和 setValue 传递给 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
});