Основной подход:
1) Создайте скрытый «шаблон», который мы будем копировать, и контейнер div, в который мы будем помещать копии:
<div id='guest_detail_template' style='visibility:hidden;position:absolute'>
<table>
<tr>
<td>Guest 's Name</td>
<td>Guest 's Address</td>
<td>Guest 's Phone</td>
<td>Guest 's Email</td>
</tr>
<tr>
<td><input type='text' name='guestName' /></td>
<td><input type='text' name='guestAddress' /></td>
<td><input type='text' name='guestPhone' /></td>
<td><input type='text' name='guestEmail' /></td>
</tr>
</table>
</div>
<div id='guest_details'></div>
2) Настройте функцию, которая добавляет копию шаблона в контейнер. Вы используете .clone()
метод выбора JQuery для создания копии, исправляете стиль, чтобы копия не была скрыта, и используете append
на контейнере (после выбора), чтобы поместить новый элемент в конец.
function add() {
var item = $('#guest_detail_template').clone();
item.attr({'style': ''});
$('#guest_details').append(item);
}
3) Вызовите функцию столько раз, сколько необходимо, или в каком-либо контексте.
4) Чтобы сделать полученную форму полезной, вам нужно знать, какое имя соответствует какому адресу и т. Д. Для этого вам понадобятся разные имена для <input>
s в каждой копии <div>
, Вы можете сделать это, используя .find
для нового элемента, чтобы выбрать <input>
s, а затем снова вызвать .attr()
, на этот раз используя некоторую вложенную функцию, чтобы внести соответствующие изменения в имя, указанное в шаблоне. (Подсказка: передайте значение, которое вы в настоящее время называете $cnt
в качестве параметра, add()
и соедините его там, где это необходимо.)