У меня есть DataTable, который суммируется по каждому столбцу, используя footerCallback. Это прекрасно работает с данными в каждом столбце, но я также хочу добавить возможность изменять значение каждой ячейки, которое суммируется. Я попытался добавить «contenteditable» к этим ячейкам, но внесение изменений не влияет на сумму в нижнем колонтитуле.DataTables footerCallback и contenteditable
Вот простой jsfiddle показывает поведение я испытываю: https://jsfiddle.net/rantoun/552y9j90/6/
HTML:
<table id="table1">
<thead>
<tr>
<th>Fruit</th>
<th># Eaten</th>
<th># Remaining</th>
</tr>
</thead>
<tfoot>
<tr>
<th align="right">Count</th>
<th align="left"></th>
<th align="left"></th>
</tr>
</tfoot>
<tbody>
<tr>
<td>Apples</td>
<td contenteditable>3</td>
<td contenteditable>8</td>
</tr>
<tr>
<td>Oranges</td>
<td contenteditable>6</td>
<td contenteditable>5</td>
</tr>
<tr>
<td>Bananas</td>
<td contenteditable>2</td>
<td contenteditable>9</td>
</tr>
</tbody>
</table>
JQuery:
$("#table1").DataTable({
"paging": false,
"searching": false,
"info": false,
"footerCallback": function (row, data, start, end, display) {
var columns = [1, 2];
var api = this.api();
_.each(columns, function(idx) {
var total = api
.column(idx)
.data()
.reduce(function (a, b) {
return parseInt(a) + parseInt(b);
}, 0)
$('tr:eq(0) th:eq('+idx+')', api.table().footer()).html(total);
})
}
});
Я также нашел редактор DataTables (https://editor.datatables.net/examples/inline-editing/simple) , что было бы идеально для этой ситуации - но это не с открытым исходным кодом. Любые идеи о том, как имитировать это встроенное редактирование , приветствуются. Я бы хотел избежать этого с помощью модалов. Любая помощь приветствуется!
В основном, то, что я сделал, это добавить обработчик события click, который, когда вы нажимаете на ячейку, изменит ячейку на текстовое поле, чтобы мой пользователь мог ввести информацию. Я использовал обработчик события blur для обновления объекта данных datatable и конвертировал его обратно в обычную ячейку таблицы. – Bindrid