На моем веб-сайте задействовано несколько таблиц, и для каждого пользователь должен иметь возможность добавлять/удалять строки. Я создал функцию jquery с помощью stackoverflow, и она успешно добавляла/удаляла строки. Единственная проблема заключается в том, что имена этих полей ввода немного перепутаны. Я хотел бы, чтобы каждое поле ввода было массивом: например, name[0] для первой строки, name[1] для второй строки и т. д. У меня есть куча таблиц с разными входными данными, так как бы мне сделать jQuery изменить имена соответствующим образом?
Моя функция работает не полностью, но я не знаю, как ее изменить.
Мой Jquery функция выглядит так:
Код: Выделить всё
$(document).ready(function() {
$("body").on('click', '.add_row', function() {
var tr = $(this).closest('.row').prev('table').find('tr.ia_table:last');
var clone = tr.clone();
clone.find("input").val('');
clone.find("select").val('');
clone.find('input').each(function(i) {
$(this).attr('name', $(this).attr('name') + i);
});
clone.find('select').each(function(i) {
$(this).attr('name', $(this).attr('name') + i);
});
tr.after(clone);
});
$("body").on('click', '.delete_row', function() {
var rowCount = $(this).closest('.row').prev('table').find('tr.ia_table').length;
var tr = $(this).closest('.row').prev('table').find('tr.ia_table:last');
if (rowCount > 1) {
tr.remove();
};
});
});
Любая помощь будет очень признательна.
p>
ОБНОВЛЕНИЕ — частично рабочее решение
После помощи многих пользователей мне удалось создать функцию, которая делает это :
Код: Выделить всё
$("body").on('click', '.add_row', function() {
var tr = $(this).closest('.row').prev('table').find('tr.ia_table:last');
var clone = tr.clone();
clone.find("input").val('');
clone.find("select").val('');
clone.find('input').each(function() {
var msg=$(this).attr('name');
var x=parseInt(msg.split('[').pop().split(']').shift());
var test=msg.substr(0,msg.indexOf('['))+"[";
x++;
x=x.toString();
test=test+x+"]";
$(this).attr('name', test);
});
clone.find('select').each(function() {
var msg1=$(this).attr('name');
var x1=parseInt(msg1.split('[').pop().split(']').shift());
var test1=msg1.substr(0,msg1.indexOf('['))+"[";
x1++;
x1=x1.toString();
test1=test1+x1+"]";
$(this).attr('name', test1);
});
tr.after(clone);
});
Единственная проблема в том, что если я это сделаю не выбирать ни один из параметров в выбранных входах, он не дает мне значение null, хотя должно. Есть какие-нибудь советы по устранению этой проблемы?
Подробнее здесь: https://stackoverflow.com/questions/438 ... put-fields
Мобильная версия