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

上下文

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


问题

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

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

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


这是一个jsFidle,正好再现了我的问题:

  1. 将row.1 col.1向下拖动到row.2 col.1 – >工作
  2. 编辑row.1 col.1的值并重复步骤1 – >返回上一个值
  3. 在row.1 col.2中输入值并向下拖动 – >重置值而不复制

似乎值属性永远不会更新。

您需要使用write回调来检索和设置元素的值。

此外,似乎AutoFill尝试默认增加值。 我不得不添加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 }] }); 

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