I'm not sure if the title describes my problem. I'm trying to make table where values can be changed inline (using contenteditable
) and which is sortable.
Unfortunately, I have no idea how to combine these features together. The HTML looks like this:
<table id="sort">
<thead>
<tr>
<th>#</th>
<th>Name</th>
<th>Last Name</th>
<th>Position</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td contenteditable="true">John</td>
<td contenteditable="true">Doe</td>
<td><img src="images/3-lines.png" /></td>
</tr>
<tr>
<td>1</td>
<td contenteditable="true">John</td>
<td contenteditable="true">Doe</td>
<td><img src="images/3-lines.png" /></td>
</tr>
</tbody>
</table>
The JS looks like this:
var fixHelperModified = function(e, tr) {
var $originals = tr.children();
var $helper = tr.clone();
$helper.children().each(function(index) {
$(this).width($originals.eq(index).width())
});
return $helper;
},
updateIndex = function(e, ui) {
$('td.index', ui.item.parent()).each(function (i) {
$(this).html(i + 1);
});
};
$("#sort tbody").sortable({
helper: fixHelperModified,
stop: updateIndex
}).disableSelection();
I would like to keep contenteditable attribute. The user should be able to reorder rows by draging "3-lines.png" icon which is on the far right cell.
It's possible?
If you can add a jquery plugin, use DataTables, it does what you want, I think.
https://editor.datatables.net/examples/inline-editing/simple