Я ищу эффективный способ клонирования/переименования или воссоздания адресных полей, чтобы предлагать возможность отправлять несколько адресов на одной странице. Итак, с примером формы следующим образом:
<div id="addresses">
<div class="address">
<input type="text" name="address[0].street">
<input type="text" name="address[0].city">
<input type="text" name="address[0].zip">
<input type="text" name="address[0].state">
</div>
</div>
<a href="" id="add_address">Add address form</a>
Из того, что я могу понять, есть два варианта:
-
Восстановите поле формы по полю и увеличьте индекс, который является довольно подробным:
var index = $(".address").length; $('<`input`>').attr({ name: 'address[' + index + '].street', type: 'text' }).appendTo(...); $('<`input`>').attr({ name: 'address[' + index + '].city', type: 'text' }).appendTo(...); $('<`input`>').attr({ name: 'address[' + index + '].zip', type: 'text' }).appendTo(...); $('<`input`>').attr({ name: 'address[' + index + '].state', type: 'text' }).appendTo(...);
-
Клон Существующий слой и замените имя в клоне:
$("div.address").clone().appendTo($("#addresses"));
Какой из них вы рекомендуете использовать с точки зрения повышения эффективности, и если его №2 вы можете предложить, как бы я пошел на поиск и заменил все вхождения [0] на [1] ([n]). Спасибо.