動的に更新可能な単一の選択リストから動的に更新するために、複数のセクションで重複した HTML 選択リストを必要とするフォーム UI があります。
動的に更新可能なリストは、新しいオプションをオンザフライで追加および削除できるという点で、うまく機能します。次に、JQuery .find() を使用して、この更新を各重複リストに反映させることができます。元の選択リストの現在選択されているインデックスを維持するためのロジックも少し追加しました。
私ができないことは、元の選択リストに新しいオプションが追加および削除されるときに、重複する選択リストのそれぞれの選択状態を維持することです。元の選択リストを更新するたびに、複製された各選択リストを反復処理すると、現在選択されているオプション インデックスが失われます。
これが私の難問の例です- *編集-これまでの提案はどれも機能していないため、解決策を提案する前に、以下に提供するコードを試して実行し、理論を適用することをお勧めします. この問題は、最初に想定したよりもかなりトリッキーであることがわかると思います。
<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 選択リストは、可能であれば (つまり、ID なしで) ある程度恣意的なままにする必要があることに注意することが重要です。
前もって感謝します!