У меня есть пользовательский интерфейс формы, в котором несколько разделов требуют, чтобы дублируемый список выбора HTML динамически обновлялся из одного динамически обновляемого списка выбора.
Динамически обновляемый список работает очень хорошо, так как новые параметры могутбыть добавлены и удалены на лету.Затем я могу получить это обновление для распространения через каждый из дубликатов списков, используя JQuery .find ().Я даже добавил немного логики, чтобы поддерживать текущий выбранный индекс исходного списка выбора.
Что я не могу сделать, так это поддерживать выбранное состояние каждого из дубликатов списков выбора, поскольку новые параметрыдобавлены и удалены из исходного списка выбора.Поскольку каждое обновление исходного списка выбора повторяется в каждом дублирующемся списке выбора, они теряют свой текущий выбранный индекс параметров.
Вот пример моей головоломки - * EDIT - я бырекомендуем вам попробовать выполнить код, который я предоставил ниже, и применить свои теории до , предлагающие решение, так как ни одно из предложений до сих пор не сработало.Я полагаю, что вы найдете эту проблему намного сложнее, чем вы могли бы сначала подумать:
<form>
<div id="duplicates">
<!--// I need for each of these duplicates to maintain their currently selected option index as the original updates dynamically //-->
<select>
</select>
<select>
</select>
<select>
</select>
</div>
<div>
<input type="button" value="add/copy" onclick="var original_select = document.getElementById('original'); var new_option = document.createElement('option'); new_option.text = 'Option #' + original_select.length; new_option.value = new_option.text; document.getElementById('original').add(new_option); original_select.options[original_select.options.length-1].selected = 'selected'; updateDuplicates();" />
<input type="button" value="remove" onclick="var original_select = document.getElementById('original'); var current_selected = original_select.selectedIndex; original_select.remove(original_select[current_selected]); if(original_select.options.length){original_select.options[current_selected < original_select.options.length?current_selected:current_selected - 1].selected = 'selected';} updateDuplicates();" />
<select id="original">
</select>
</div>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
function updateDuplicates(){
$("#duplicates").find("select").html($("#original").html());
}
</script>
</form>
Важно отметить, что дублирующиеся списки выбора HTML должны оставаться несколько произвольными, если это вообще возможно (т.е.без идентификаторов), поскольку этот метод должен применяться в общем случае к другим динамически создаваемым спискам выбора по всему документу.
Заранее спасибо!