Рассмотрим следующий код:JQuery-UI Сортируемый и строка заменить вопрос
$(document).ready(function() {
$("tbody").sortable({
handle: 'td:first',
opacity: 0.75,
helper: function (e, ui) {
ui.children().each(function() {
$(this).width($(this).width());
});
return ui;
},
stop: function (event, ui) {
alert("reorder triggered");
// Re-order items based on position in table
$(".dragablePager").each(function (index) {
$(this).find("input").each(function() {
alert(index);
alert("old name: " + this.name);
oldname = this.name;
newname = oldname.replace(/\d+/, index);
this.name = newname;
alert("new name: " + this.name);
alert(newname);
});
});
}
});
});
Часть формы я имею дело с выглядит примерно так:
<tbody>
<tr class="dragablePager">
<td>
</td>
<td>
<input type="text" name="pagers[0][CellEmail]" value="REDACTED">
</td>
<td>
<input type="text" name="pagers[0][Message]" value="test 1">
</td>
</tr>
<tr class="dragablePager">
<td>
</td>
<td>
<input type="text" name="pagers[1][CellEmail]" value="REDACTED">
</td>
<td>
<input type="text" name="pagers[1][Message]" value="sdfdsfdf">
</td>
</tr>
<tr class="dragablePager">
<td>
</td>
<td>
<input type="text" name="pagers[2][CellEmail]" value="REDACTED">
</td>
<td>
<input type="text" name="pagers[2][Message]" value="3247678">
</td>
</tr>
</tbody>
Что я завязывания сделать это изменение индексов входных элементов на основе их порядка в таблице после того, как пользователь выполнил перетаскивание. Проблема в том, что по какой-то причине очень простой RegEx, который я тестировал с помощью тестера RegEx, отказывается работать. oldname и newname всегда одинаковы.
Я иду с орехами; какого черта я делаю неправильно?
EDIT: Я получаю этот вывод в моей консоли для кода, размещенного в первом комментарии:
0
old name: pagers[1][CellEmail]
new name: pagers[1][CellEmail]
0
old name: pagers[1][Message]
new name: pagers[1][Message]
1
old name: pagers[2][CellEmail]
new name: pagers[2][CellEmail]
1
old name: pagers[2][Message]
new name: pagers[2][Message]
2
old name: pagers[0][CellEmail]
new name: pagers[0][CellEmail]
2
old name: pagers[0][Message]
new name: pagers[0][Message]
Вот код из этого комментария (почти идентичного моего оригинал):
$(document).ready(function() {
$("tbody").sortable({
handle: 'td:first',
opacity: 0.75,
helper: function(e, ui) {
ui.children().each(function() {
$(this).width($(this).width());
});
return ui;
},
stop: function(event, ui) {
console.log("reorder triggered");
// Re-order items based on position in table
$(".dragablePager").each(function(index) {
$(this).find("input").each(function() {
console.log(index);
console.log("old name: " + this.name);
oldname = this.name;
newname = oldname.replace(/\d+/, index);
console.log("new name: " + newname);
this.name = newname;
});
});
}
});
});
Как это может случиться? Очевидно, что что-то не так, чтобы получить такой результат.
[Рабочий тон] (https://jsfiddle.net/c5zk24qa/) –
Эта скрипка работает, но я говорю вам, что она НЕ работает на моей фактической странице. также, почему downvotes? У меня есть законная проблема, если она «просто сработала», я бы не разместил здесь. – dmarra
Что мы можем сделать, если оно не работает на вашей странице ..? Вы должны предоставить нам код, необходимый для воспроизведения проблемы. Который у вас нет. Попробуйте опубликовать [mcve] –