DataTables的自动填充扩展,输入元素不起作用

时间:2015-07-08 11:17:30

标签: javascript jquery datatables datatables-1.10

上下文

我正在使用dataTables扩展名为AutoFill的插件。它基本上允许您通过向上或向下拉动十字架(它的右下角)来复制单元格。这在我的项目中工作正常。

问题

但是,当我尝试复制单元格内的输入时,它会清除所选输入。阅读文档,似乎旧版本的插件可以复制单元格内的输入,只需添加一个小script即可。从current doc开始,通过查看write选项,默认情况下应该可以查找我正在寻找的行为:

  

这个回调是fnRead的必然结果,提供了一种方法   自定义自动填充如何将计算的填充值写入给定单元格。   默认情况下,自动填充将在输入或选择元素中设置值   在单元格中找到,否则将其设置为HTML。

问题是,当输入具有初始值时,复制起作用。但是在添加/编辑值时,它会复制前一个值。它试图添加读写函数选项,但从不调用它们(参见小提琴)。

代码

这是jsFidle正好再现我的问题:

  1. 将row.1 col.1向下拖动到第2行col.1 - >原理
  2. 编辑row.1 col.1的值并重复步骤1 - >回到之前的价值
  3. 在row.1 col.2中输入值并向下拖动 - >重置值而不复制
  4. 似乎值属性永远不会更新。

1 个答案:

答案 0 :(得分:2)

您需要使用readwrite回调来检索和设置<input>元素的值。

自动填充似乎也会尝试默认增加值。我不得不添加step回调来覆盖此行为。

new $.fn.dataTable.AutoFill(table, {
    "columnDefs": [{
        "read": function (cell) {
            return $('input', cell).val();
        },
        "write": function (cell, val) {
            return $('input', cell).val(val);
        },
        "step": function ( cell, read, last, i, x, y ) {
           return last === undefined ? read : last;
        },        
        "targets": [0,1,2] // Use "_all" to target all columns
    }]
});

请参阅this JSFiddle以获取代码和演示。