Я делаю форму в CakePHP с помощью jQuery. Моя проблема в том, что мне нужно иметь возможность клонировать некоторые поля формы с помощью jQuery. Форма является резервированием, и мне нужно клонировать данные клиента, чтобы добавить более 1 клиента (если это группа).
Я использую этот код:
var idx = 0;
$(document).ready(function() {
$("#addCustomerFields").click(function() {
idx = idx + 1;
var x = $("#Cliente").clone();
$(x)
.attr("id", "Client." + idx)
.find("label").each(function() {
$(this).attr("for", $(this).attr("for").replace(".0", "." + idx));
})
.end()
.find("input").each(function() {
$(this)
.attr("id", $(this).attr("id").replace(".0", "." + idx))
.attr("name", $(this).attr("name").replace("[0]", "[" + idx + "]"));
//this.value = '';
})
$("#CustomerFields").append(x);
});
});
Работает нормально, но только с полями для ввода текста. Выпадающие (выберите) не работают. Похоже, что атрибуты select (id и name) не изменены скриптом. Когда я добавляю 2 клиентов, сначала один мужчина и вторая женщина в базу данных, первый появляется как женщина, а второй - без секса. Каждое поле имеет свое имя и идентификатор: Клиент [0] [Имя], Клиент [0] [Пол] и т. Д. Когда я клонирую, я увеличиваю число, и это работает только при вводе текста.
Вид:
<fieldset id="Cliente">
<legend class="legend"><?php __('Client Info'); ?></legend>
<?php
//this is select
echo $this->Form->input('Client.0.sex_id', array(
'label'=>'Gender',
'div'=>'float IconSex',
)
);
echo $this->Form->input('Client.0.firstname', array(
'label'=>'First name',
'div'=>'float IconUser'
)
);
echo $this->Form->input('Client.0.lastname', array(
'label'=>'Last name',
'div'=>'float IconUser'
)
);
//another select
echo $this->Form->input('Client.0.country_id', array(
'label'=>'Country',
'div'=>'clear IconCountry',
'default'=>'121'
)
);
?>
</fieldset><div id="CustomerFields"></div>
<?php
echo $this->Html->div('IconAdd', 'Add customer.', array(
'id'=>'addCustomerFields',
)
);
?>
Есть идеи?