Handsontable onchange 事件需要更改同一单元格本身的值,而相邻的工作不工作
Posted
技术标签:
【中文标题】Handsontable onchange 事件需要更改同一单元格本身的值,而相邻的工作不工作【英文标题】:Handsontable onchange event needs to change the value of the same cell itself not working while adjacent works 【发布时间】:2016-04-15 20:56:29 【问题描述】:我的结构如下:
var container = document.getElementById('tableorder');
ordertable = new Handsontable(container,
data: data,
colHeaders: ['Pdct', 'Notes', 'Qty', 'FQty', 'Fd Qty'],
columns: [
data: 4, readOnly: false, type: 'autocomplete', source: prodnames, validator: product_validations, strict: true,
data: 11, readOnly: false,
data: 6, readOnly: false, type: 'numeric', format: '0.000', validator: qty_validations, allowInvalid: true,
data: 18, readOnly: true, type: 'numeric', format: '0.000',
data: 19, readOnly: false, type: 'numeric', format: '0.000', validator: forward_validations, allowInvalid: true
],
minSpareRows: 1,
rowHeaders: true,
contextMenu: ['row_above', 'row_below', 'remove_row', 'undo', 'redo'],
colWidths: [250, rest, 100, 100, 100],
autoWrapRow: true,
autoWrapCol: true,
beforeRemoveRow: removerow_validation
);
Fd Qty栏的Onchange如下:
function forward_validations(value, callback)
var curdatatable = ordertable.getSourceData();
if(value.toString().trim()=="")
curdatatable[this.row][19] = 0;->not working
// curdatatable[this.row][18] = 0;->working perfectly
callback(true);
我正在做的是如果 onchange 值为空白,那么同一列,即第 19 列。需要改为0
这里单元格值需要改变,发生单元格的onchange函数是一样的。
curdatatable[this.row][19] = 0;
-> 不工作
但如果我尝试
curdatatable[this.row][18] = 0;
-> 工作
为什么会这样?
如果 onchange 事件发生在需要更改的同一单元格本身上,如何更改单元格的值?
【问题讨论】:
【参考方案1】:您并没有真正使用 onchange 事件,而是使用了验证器功能。尝试改用beforeChange。
beforeChange: function(changes, source)
// changes is a 2d array like [[row, prop, oldVal, newVal], ...]
if (changes[0][1] == 19 && changes[0][3].toString().trim() == "")
changes[0][3] = 0;
return changes;
请注意,当您一次更改多个单元格(如复制和粘贴)时,您可能需要循环通过 changes
来处理。
【讨论】:
以上是关于Handsontable onchange 事件需要更改同一单元格本身的值,而相邻的工作不工作的主要内容,如果未能解决你的问题,请参考以下文章
当用js动态的改变一个输入框中的值后,并不能触发它的onchange事件why?
change事件和onchange事件,click事件和onclick事件这些都有啥区别