JQuery: поиск способа именования клонированных полей вводаJquery

Программирование на jquery
Ответить
Anonymous
 JQuery: поиск способа именования клонированных полей ввода

Сообщение Anonymous »

Я не очень хорошо разбираюсь в jQuery, но он мне нужен, чтобы сделать мой сайт удобным для пользователя.
На моем веб-сайте задействовано несколько таблиц, и для каждого пользователь должен иметь возможность добавлять/удалять строки. Я создал функцию 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();
};
});
});
Я также создал здесь jsFiddle: https://jsfiddle.net/tareenmj/err73gLL/.
Любая помощь будет очень признательна.
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);

});
Рабочий jsFiddle находится здесь: https://jsfiddle.net/tareenmj/amojyjjn/2/
Единственная проблема в том, что если я это сделаю не выбирать ни один из параметров в выбранных входах, он не дает мне значение null, хотя должно. Есть какие-нибудь советы по устранению этой проблемы?

Подробнее здесь: https://stackoverflow.com/questions/438 ... put-fields
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»