Javascript 如何在Handsontable中使用挂钩。粘贴前我需要检查数据
在将数据插入表之前,我需要检查数据,如果数据不正确,请更改并插入。我试图创建一个带有beforeInsert前缀的钩子,并在这里描述这个逻辑,但它不起作用 我尝试了这段代码进行测试,但粘贴时没有任何变化Javascript 如何在Handsontable中使用挂钩。粘贴前我需要检查数据,javascript,react-hooks,handsontable,rhandsontable,Javascript,React Hooks,Handsontable,Rhandsontable,在将数据插入表之前,我需要检查数据,如果数据不正确,请更改并插入。我试图创建一个带有beforeInsert前缀的钩子,并在这里描述这个逻辑,但它不起作用 我尝试了这段代码进行测试,但粘贴时没有任何变化 hot1.addHook('beforePaste', function(td1, row1, col1, prop1, value1, cellProperties1) { if (prop1 === 'cost1') { var c
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;
}
}
);
如何检查并将更改后的值插入表中?
例子:
在输入3213处插入3213,只需删除空格即可
UPD:
我也试着用这个:
if (prop === 'cost1' && value != '') {
var cellMeta = this.getCellMeta(row, this.propToCol('cost1'));
hot1.setDataAtCell(row,col,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将替换这些值更改和src本身,然后我们可以拉出插入的值并更改它,然后将其插入回我们可以使用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将替换这些值和src本身,之后我们可以取出插入的值并对其进行更改,然后再将其插入回去