Я работаю над CakePHP
view
, чтобы добавить несколько данных model
, я бы хотел, чтобы пользователь выбирал, сколько строк он хочет сохранить.Использование JavaScript для дублирования текста ввода текста не работает
Процесс работает, если я создаю строки через представление CakePHP, но если я использую jQuery, данные не сохраняются, я проверил различия между генерированием кода через CakePHP и кодом, дублируемым через jQuery, не увидев что-то важное:
CakePHP генерироваться форма:
<div class="location-row">
<div class="field wrp">
<input name="data[Location][0][name]" value="Location name" maxlength="50" type="text" id="Location0Name">
</div>
<div class="value wrp">
<input name="data[Location][0][value]" value="Location value" maxlength="50" type="text" id="Location0Value">
</div>
</div>
<div class="location-row">
<div class="field wrp">
<input name="data[Location][1][name]" value="Location name" maxlength="50" type="text" id="Location1Name">
</div>
<div class="value wrp">
<input name="data[Location][1][value]" value="Location value" maxlength="50" type="text" id="Location1Value">
</div>
<div class="btn remove-location-row bad">delete</div>
</div>
<div class="location-row">
<div class="field wrp">
<input name="data[Location][2][name]" value="Location name" maxlength="50" type="text" id="Location2Name">
</div>
<div class="value wrp">
<input name="data[Location][2][value]" value="Location value" maxlength="50" type="text" id="Location2Value">
</div>
<div class="btn remove-location-row bad">delete</div>
</div>
спасбросков процесс отлично работает с CakePHP генерироваться формы:
echo $this->Form->input('Comparison.0.name', array ('div' => array ('class' => 'field wrp'), 'label' => false, 'value' => $name_text));
echo $this->Form->input('Comparison.0.value', array ('div' => array ('class' => 'value wrp'), 'label' => false, 'value' => $value_text));
echo $this->Form->input('Comparison.1.name', array ('div' => array ('class' => 'field wrp'), 'label' => false, 'value' => $name_text));
echo $this->Form->input('Comparison.1.value', array ('div' => array ('class' => 'value wrp'), 'label' => false, 'value' => $value_text));
echo $this->Form->input('Comparison.2.name', array ('div' => array ('class' => 'field wrp'), 'label' => false, 'value' => $name_text));
echo $this->Form->input('Comparison.2.value', array ('div' => array ('class' => 'value wrp'), 'label' => false, 'value' => $value_text));
с CHRO меня отладчик Я посылаю все данные с CakePHP
формы полностью запеченной:
_method:POST
data[Location][0][name]:Location name
data[Location][0][value]:Location value
data[Location][1][name]:Location name
data[Location][1][value]:Location value
data[Location][2][name]:Location name
data[Location][2][value]:Location value
JQuery дублированных строки
<div class="location-row">
<div class="field wrp">
<input name="data[Location][0][name]" value="Location name" maxlength="50" type="text" id="Location0Name">
</div>
<div class="value wrp">
<input name="data[Location][0][value]" value="Location value" maxlength="50" type="text" id="Location0Value">
</div>
</div>
<!-- FROM HERE THE ROWS ARE DUPLICATED with jQuery -->
<div class="location-row">
<div class="field wrp">
<input name="data[Location][1][name]" value="Location name" maxlength="50" type="text" id="Location1Name">
</div>
<div class="value wrp">
<input name="data[Location][1][value]" value="Location value" maxlength="50" type="text" id="Location1Value">
</div>
</div>
<div class="location-row">
<div class="field wrp">
<input name="data[Location][2][name]" value="Location name" maxlength="50" type="text" id="Location2Name">
</div>
<div class="value wrp">
<input name="data[Location][2][value]" value="Location value" maxlength="50" type="text" id="Location2Value">
</div>
</div>
Если я дублировать строки с jQuery
только CakePHP
ввода текст запеченный отправляются, но HTML кажется чтобы быть в порядке:
_method:POST
data[Location][0][name]:Location name
data[Location][0][value]:Location value
Это код JQuery Я использую клонировать поля ввода:
var comparison_id = 1;
$('.add-location-row').click(function() {
if ($(this).siblings('.location-row').length > 1) {
$(this).siblings('.location-row').last().clone().insertAfter($('.location-row').last());
} else {
$(this).siblings('.location-row').last().clone().append('<div class="btn remove-location-row bad">delete</div>').insertAfter($('.location-row').last());
}
var element_1 = $(this).prev().find('div:nth-child(1) input');
var element_2 = $(this).prev().find('div:nth-child(2) input');
var id_att_1 = element_1.attr('id');
var id_att_2 = element_2.attr('id');
id_att_1 = id_att_1.replace((comparison_id-1).toString(), comparison_id.toString());
id_att_2 = id_att_2.replace((comparison_id-1).toString(), comparison_id.toString());
var name_att_1 = element_1.attr('name');
var name_att_2 = element_2.attr('name');
name_att_1 = name_att_1.replace((comparison_id-1).toString(), comparison_id.toString());
name_att_2 = name_att_2.replace((comparison_id-1).toString(), comparison_id.toString());
comparison_id ++;
element_1.attr('id', id_att_1);
element_2.attr('id', id_att_2);
element_1.attr('name', name_att_1);
element_2.attr('name', name_att_2);
$(this).prev().find('.remove-location-row').bind('click', function() {
$(this).parent().remove('.location-row');
});
});
Использование jQuery не влияет на CakePHP
, только первая строка сохраняется, где я ошибаюсь?
сделал вы посмотрите на сети передачи данных на хромированной вкладке сети или поджигатель и т.д., если сообщение/получить данные получены из сценария обработки? –
Я опубликовал, как данные отправляются, если я использую javascript для дублирования элементов входной формы. – vitto
Я помню, что в вашем вопросе были некоторые коды jQuery. Почему вы их удалили? Используете ли вы .clone() для дублирования строк? –