У меня есть контент, сгенерированный PHP, но динамически измененный jQuery. DOM генерируется на основе выбора пользователя, и мне нужны все входные данные, выбирает et c. сохраняться, когда пользователь выбирает любую опцию, которая повторно генерирует DOM. Для этого я использую функцию .html()
. Проблема в том, что копируются только те значения, которые были вставлены PHP. Значения, которые были установлены функцией .val()
или введены самим пользователем, теряются при использовании .html()
. Я пробовал даже функцию .clone()
, но результат тот же.
У меня DOM похож на:
<div id="number_of_persons">
<select>
<option value="1">1</option>
<option value="2" selected>2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</div>
<div id="placeholder">
<div id="person1">
Name: <select><option value="">Name A</option><option value="">Name B</option></select>
<div id="person1_placeholder">... another dynamically generated inputs ...</div>
</div>
<div id="person2">
Name: <select><option value="">Name A</option><option value="">Name B</option></select>
<div id="person2_placeholder">... another dynamically generated inputs ...</div>
</div>
</div>
Когда пользователь меняет количество человек, например от 2 до 3, я нужно сохранить первое и второе (да, решение в этом случае будет использовать .append()
, но реальный DOM довольно сложен, и нужно регенерировать целое #placeholder
). Поэтому я использую функцию simliar для:
$('#number_of_persons').on('change', function() {
var html = '';
for(var i = 1; i <= $(this).val(); i += 1) {
html += '<div id="person' + i + '">';
html += 'Name: <select><option value="">Name A</option><option value="">Name B</option></select>';
// the line below is the problem, because all selects and inputs lost their values set by user or via jQuery .val() function
html += '<div id="person' + i + '_placeholder">' + ($('#person' + i + '_placeholder').html() || '') + '</div>';
html += '</div>';
}
$('#placeholder').html(html);
});
Как обеспечить копирование значений из селекторов и входов в #personX_placeholder
?