Datatable导出数据时表单输入值缺失的解决方法咨询
解决Datatables导出内嵌input列值为空的问题
Datatables默认导出的是单元格原始HTML内容,而非input表单的当前输入值,因此需要在导出配置中主动提取input的value值。以下是两种可行的解决方法:
方法1:为每个导出按钮单独配置格式处理
初始化表格时,在每个导出按钮的exportOptions中,针对目标列编写格式转换函数,获取input的当前值:
$('#product-table').DataTable({ buttons: [ { extend: 'csv', exportOptions: { format: { cell: function(data, columnIdx) { // 假设PCs列的索引为2(根据实际表格结构调整) if (columnIdx === 2) { return $(data).find('input[type="number"]').val() || ''; } return data; } } } }, { extend: 'excel', exportOptions: { format: { cell: function(data, columnIdx) { if (columnIdx === 2) { return $(data).find('input[type="number"]').val() || ''; } return data; } } } }, { extend: 'pdf', exportOptions: { format: { cell: function(data, columnIdx) { if (columnIdx === 2) { return $(data).find('input[type="number"]').val() || ''; } return data; } } } }, { extend: 'print', exportOptions: { format: { cell: function(data, columnIdx) { if (columnIdx === 2) { return $(data).find('input[type="number"]').val() || ''; } return data; } } } } ] });
方法2:通过columnDefs统一处理目标列
如果希望所有导出按钮共用同一处理逻辑,可在columnDefs中定义列的导出格式,避免重复代码:
$('#product-table').DataTable({ columnDefs: [ { targets: 2, // PCs列的索引(从0开始计数) exportOptions: { format: { cell: function(data) { return $(data).find('input[type="number"]').val() || ''; } } } } ], buttons: ['csv', 'excel', 'pdf', 'print'] });
关键注意点
- 替换代码中的
#product-table为实际表格的ID - 根据表格列的实际顺序调整
targets或columnIdx的数值 - 若单元格内存在多个input,可使用更精准的选择器(如
input[name="pcs-count"])定位目标输入框 - 确保页面已加载jQuery,否则
$(data)无法正常工作
内容的提问来源于stack exchange,提问作者Benjamin Mwendwa Munyoki
相关产品推荐
相关产品推荐

