DataTables 的自动填充扩展,输入元素不起作用
DataTables' Autofill extension with input elements not working
上下文
我正在使用 dataTables plugin with the AutoFill 扩展程序。它基本上允许您通过向上或向下拉十字(它的右下角)来复制单元格。这在我的项目中工作正常。
问题
但是,当我尝试复制单元格内的输入时,它会清除所选输入。阅读文档,似乎旧版本的插件可以在单元格内复制输入,只需添加一个小 script. From the current doc,通过查看 write
选项,我正在寻找的行为应该默认情况下可能:
This callback is the corollary of fnRead, providing a method to
customise how AutoFill writes a calculated fill value to a given cell.
By default AutoFill will set the value in an input or select element
in a cell if found, otherwise it will set the value as HTML.
事实是,当输入具有初始值时,复制有效。但是当 adding/editing 值时,它会复制前一个。它试图添加读取和写入功能选项,但它们从未被调用(参见 fiddle)。
代码
这里 jsFidle 完全重现了我的问题:
- 向下拖动 row.1 col.1 到 row.2 col.1 -> 有效
- 编辑 row.1 col.1 的值并重复步骤 1 -> 返回到先前的值
- 在 row.1 col.2 中输入值并将其向下拖动 -> 重置值而不复制
似乎从未更新值属性。
您需要使用 read
和 write
回调来检索和设置 <input>
元素的值。
此外,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
}]
});
有关代码和演示,请参阅 this JSFiddle。
上下文
我正在使用 dataTables plugin with the AutoFill 扩展程序。它基本上允许您通过向上或向下拉十字(它的右下角)来复制单元格。这在我的项目中工作正常。
问题
但是,当我尝试复制单元格内的输入时,它会清除所选输入。阅读文档,似乎旧版本的插件可以在单元格内复制输入,只需添加一个小 script. From the current doc,通过查看 write
选项,我正在寻找的行为应该默认情况下可能:
This callback is the corollary of fnRead, providing a method to customise how AutoFill writes a calculated fill value to a given cell. By default AutoFill will set the value in an input or select element in a cell if found, otherwise it will set the value as HTML.
事实是,当输入具有初始值时,复制有效。但是当 adding/editing 值时,它会复制前一个。它试图添加读取和写入功能选项,但它们从未被调用(参见 fiddle)。
代码
这里 jsFidle 完全重现了我的问题:
- 向下拖动 row.1 col.1 到 row.2 col.1 -> 有效
- 编辑 row.1 col.1 的值并重复步骤 1 -> 返回到先前的值
- 在 row.1 col.2 中输入值并将其向下拖动 -> 重置值而不复制
似乎从未更新值属性。
您需要使用 read
和 write
回调来检索和设置 <input>
元素的值。
此外,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
}]
});
有关代码和演示,请参阅 this JSFiddle。