javascript - Tabulator.js:单击复选框时不会触发 cellClick 回调
问题描述
我需要在recal
复选框选中一行后调用来重新计算表格。如果通过单击行调用recal
工作来选择它。我从插件站点复制了以下代码
{formatter:"rowSelection", titleFormatter:"rowSelection", hozAlign:"center", headerSort:false, cellClick:function(e, cell){
console.log("table ",table);
// cell.getRow().toggleSelect();
console.log("table ",table);
table.recalc();
}},
但什么都没有被执行。该复选框被选中并突出显示该行。你可以试试我的jsFiddle。
更新 1 因此,如果我单击复选框,它会起作用,但我希望在单击复选框时触发该功能。
解决方案
顾名思义cellClick
,应该在单元格元素单击时调用另一个元素,该元素被认为是单元格,并且复选框包含在单元格内,这就是为什么cellClick
单击复选框时不触发而在复选框外单击时触发的原因
问题
正如@EugeneOlisevich 所建议的,而不是听cellClick
,听rowSelectionChanged
会是更好的选择。在第一次加载完成之前,不会创建使用
table
to callrecalc
as reference 来代替。table
您可以访问
recalc
功能的另一种方法是通过this
...
rowSelectionChanged: function(e, row) {
this.recalc();
},
...
- 问题
当您单击可编辑列时,如果选择了行,那么它将取消选择
可以通过防止通过功能event
冒泡到父级来解决的行。cellClick
...
{
title: "mn",
field: "mn",
editor: "number",
cellEdited: function(cell) {
aktualizuj_m(cell);
},
cellClick: function(e, cell) {
e.preventDefault();
e.stopPropagation();
},
},
...
- 问题
由于table
在第一次加载时未创建参考,因此我添加了条件以在table
参考为undefined
/之前不运行循环null
table && values.forEach(function(value, index) {
var row = table.getRow(index + 1);
if (row.isSelected() && value) {
calc = calc + value;
}
});
- 问题
如果将mn
列输入更改为 0,则 sum 不会更新,这可以通过更新条件来解决。
...
if (typeof mnozstvi == "number") {
cell.getRow().update({
cena_m: cena * mnozstvi
});
}
...
注:负数范围可在mn
列中输入
这里的工作示例
推荐阅读
- react-native - Expo Notification askAsync() - 有没有办法自定义消息?
- python - 将一维向量正确整形为多个矩阵(numpy)
- python-3.x - 为什么函数 key=randint(1,71) 不起作用?
- python - 每当我将 {{example}} 放在 div 中时,它都会将文本留空。(烧瓶)
- java - 如何使用 retroift2 实现自定义错误处理
- amazon-web-services - 在 IAM 策略中使用 LeadingKeys 条件时,DynamoDb 上的 KeyConditionExpression 用于“查询所有项目”?
- while-loop - 我的 while 循环(Python)有什么问题?
- html - 如何无法让用户为其中一个注册表单字段选择标签?
- node.js - 无论语音通道中用户的状态如何,如何让机器人充币
- javascript - 为什么我的代码虽然应该暂停但仍在执行?