Это может быть сложнее, чем вы хотели, но я надеюсь, что это поможет.
https://jsfiddle.net/Twisty/9aes8omr/
JavaScript
$(function() {
function showIndex(tb) {
var fields = $(tb).find("input[name='order']");
console.log(fields);
fields.each(function(ind, el) {
console.log(ind, el);
$(el).val(ind + 1);
});
}
function spliceRow(tb, r, i) {
var ind = i - 1;
var ln = $("tr", tb).length;
var rows = [];
$("tr", tb).each(function(ind, el) {
rows.push(el);
});
rows.splice(ind, 0, r);
tb.html("");
$.each(rows, function(k, v) {
tb.append(v);
});
}
// Fix the width of the cells
$('td, th', '#sortFixed').each(function() {
var cell = $(this);
cell.width(cell.width());
});
$('#sortFixed tbody').sortable({
items: "> tr",
update: function(e, ui) {
console.log("Sort Update.");
showIndex($(this));
}
}).disableSelection();
$("#sortFixed tbody").on("change", "input[name='order']", function(e) {
var me = $(this);
var orig = me.parents("tr");
var row = orig.clone();
var t = parseInt(me.val());
console.log(t, row);
orig.remove();
spliceRow($("#sortFixed tbody"), row, t);
$("#sortFixed tbody").sortable("refresh");
showIndex($("#sortFixed tbody"));
});
});
ЕслиВы создаете массив строк HTML, затем вы можете использовать .splice()
.Если вы хотите использовать сортируемое и вводить индексы вручную, приведенный выше код делает это.Вы можете перетащить их, и он будет прибегать или вы можете ввести число, и это изменит положение (а также обновит сортируемую информацию).
Это означает, что в конце вы можете использовать .sortable("serialize")
или .sortable("toArray")
в качествекак.
Надеюсь, что помогает.