如何解决如何在 Handsontable 中使用钩子我需要在粘贴前检查数据
我需要在将数据插入表之前检查数据,如果不正确,请更改并插入。我正在尝试创建一个带有 beforeInsert 前缀的钩子并在那里描述这个逻辑,但它不起作用。
我试过这段代码进行测试,但粘贴时没有任何变化
hot1.addHook('beforePaste',function(td1,row1,col1,prop1,value1,cellProperties1) {
if (prop1 === 'cost1') {
var cellMeta1 = this.getCellMeta(row,this.propToCol('cost2'));
cellMeta1.type = 'text';
cellMeta1.source = 'hello';
}
}
);
问题会不会是之前我调用了这个钩子?
hot1.addHook('beforeRenderer',function(td,row,col,prop,value,cellProperties) {
if (prop === 'warehouse') {
var cellMeta = this.getCellMeta(row,this.propToCol('xWarehouse'));
cellMeta.readOnly = (value != ' ' && value != '' && value != null) ? true : false;
}
}
);
如何检查并插入更改后的值到表中? 例子: 在输入3 213处,插入3213,去掉空格
更新:
我也尝试使用这个:
if (prop === 'cost1' && value != '') {
var cellMeta = this.getCellMeta(row,this.propToCol('cost1'));
hot1.setDataAtCell(row,value);
}
});
但在这种情况下,我的桌子冻结了
解决方法
我们可以用 afterChange 钩子改变这个值。
var setter = false;
hot1.addHook('afterChange',function(changes,src) {
if (!setter) {
setter = true;
for(let obj of changes){
var currentRow = obj[0];
var currentValue = obj[3].replace(/\s+/g,'');
var currentCol = obj[1].replace(/\s+/g,'');
var colNumber = hot1.propToCol(currentCol);
hot1.setDataAtCell(currentRow,colNumber,currentValue);
}
} else {
setter = false;
}
});
Handsontable会替换changes和src本身的值,之后我们就可以把插入的值拉出来改一下,再插回去
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。