如何获取制表符验证器将数据设置为回调中的单元格

时间:2019-07-29 21:08:44

标签: javascript tabulator

我想找到一种方法来获取制表器验证回调以将数据设置到单元格。解释我的用例:

我有一个单元格,希望用户能够输入数据。我的自定义验证程序确保输入的数据在选项列表中匹配。当前输入的数据必须区分大小写,因为我希望输入的数据遵循某种格式。

我的目标: 允许用户输入数据,例如“ bob”。验证失败,并且验证回调发现“ Bob”存在小写字母匹配,因此单元格值应为“ Bob”。

我认为我已经完成了90%的工作,我已经具备了设置回调值的所有逻辑,但是看来我可能以一种不好的方式破坏了制表符。该单元格看起来仍处于编辑模式(但是失去了焦点,单元格周围有一个红色框)。

我的验证者代码:

 var validCheck = function (cell, value, parameters) {
            return (AllowedVals.map(function (v) { return v.name; 
                })).includes(value); 
        }

我的验证程序回调:

            validationFailed:function(cell, value, validators){

                if (AllowedVals.map(function (v) { return v.name.toLowerCase(); }).includes(value.toLowerCase())) {
                    var match = AllowedVals.filter(function (allowedVal) { return allowedVal.name.toLowerCase() == value.toLowerCase() });
                    cell.setValue(AllowedVals[0].name);                    
                }
            },

通过验证回调更新单元格后,我无法再编辑该单元格,永远不会调用cellEdited方法,并且Chrome Dev Console中存在很多错误(总共48个)。我有“超出了最大调用堆栈大小”和“未捕获的DOMException:无法在'Element'上设置'innerHTML'属性:要删除的节点不再是该节点的子节点。也许已将其移动为'blur'事件处理程序?”

这使我相信制表符陷入了某种验证循环。有人可以帮助我找到正确的方式来获得我想要的行为吗?

1 个答案:

答案 0 :(得分:0)

这里是变量。

我将验证设置为不区分大小写的匹配项。

 var validCheck = function (cell, value, parameters) {
            return (AllowedVals.map(function (v) { return v.name.toLowerCase(); 
                })).includes(value.toLowerCase()); 
        }

然后创建了一个变量,如果发现不区分大小写的匹配项,则返回正确的大小写。

var Mutate = function(value, data, type, params, component){

             if (AllowedVals.map(function (v) { return v.name.toLowerCase(); }).includes(value.toLowerCase())) {
                    var match = AllowedVals.filter(function (allowedVal) { return allowedVal.name.toLowerCase() == value.toLowerCase() });
                     return match[0].name;                    
                }
             else {
                 return value;      
             }
        }

最后,它会将正确的数据发布到我的服务器上,并立即使用突变的数据更新网格视图(额外奖金)。