Как скопировать все options
одного элемента select
в другое? Пожалуйста, дайте мне самый простой способ, у меня аллергия на цикл.
Пожалуйста, помогите мне. Спасибо заранее!
Как скопировать все options
одного элемента select
в другое? Пожалуйста, дайте мне самый простой способ, у меня аллергия на цикл.
Пожалуйста, помогите мне. Спасибо заранее!
HTML:
<select id="selector_a">
<option>op 1</option>
<option>op 2</option>
</select>
<select id="selector_b">
<option>op 3</option>
<option>op 4</option>
</select>
JavaScript:
var first = document.getElementById('selector_a');
var options = first.innerHTML;
var second = document.getElementById('selector_b');
var options = second.innerHTML + options;
second.innerHTML = options;
Один из самых простых способов без цикла: jquery
(select1
= id для выбора 1, select2
= id для выбора 2):
$('#select1 option').clone().appendTo('#select2');
Без jquery
:
var select1 = document.getElementById("select1");
var select2 = document.getElementById("select2");
select2.innerHTML = select2.innerHTML+select1.innerHTML;
Я поддерживаю некоторые страницы режима совместимости с IE11, которые работают как IE7, и чистое решение javascript выше не работает для меня. Первый тег опций открытия будет необъяснимо разделен с использованием прямого назначения innerHTML.
Что сработало для меня, явное добавление каждой опции в коллекцию опций выбора к новому выбору. В этом случае он должен был поддерживать вызов AJAX, поэтому сначала я очистил список, но я уверен, что это также может быть добавлено.
var fromSelect = document.getElementById('a');
var toSelect = document.getElementById('b');
toSelect.innerHTML = "";
for (var i = 0; i < fromSelect.options.length; i++) {
var option = fromSelect.options[i];
toSelect.appendChild(option);
}
Надеюсь, это поможет любому, кто застрял в режиме совместимости, поскольку эта страница находилась в верхней части списка в поиске Google.
использовать jQuery foreach?
$("#the-id option").each(function() {
var val = $(this).val();
var txt = $(this).html();
$("the-other-id").append(
$('<option></option>').val(val).html(txt);
);
});
вы можете легко сделать это через jquery:
<select id="sel1">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<select id="sel2">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
$(document).ready(function(){
$("#sel2").html($("#sel1").html());
});
$('#cloneBtn').click(function() {
var $options = $("#myselect > option").clone();
$('#second').empty();
$('#second').append($options);
$('#second').val($('#myselect').val());
});
This is used to copy the value and the innerHTML. Its better to copy the key,
value and the OPTIONS.i.e. the selected value and the options.
Его более старая нить, но я надеюсь, что следующее поможет кому-то. Нет петель вообще.
function copyFromMultiselect(srcId,targetId, allFlag){
if(allFlag){
$("#"+targetId).append($("#"+srcId).html());
$("#"+srcId).empty();
}else{
$("#"+targetId).append($("#"+tabContentId+" #"+srcId+" option:selected"));
}
}
//first ans can be modified as follows to get direct result while using dropdown
<html>
<head>
<script>
onload
function myFunction1(){
var first = document.getElementById('selector_a');
var second = document.getElementById('selector_b');
var chk=document.getElementById('selector_main').value;
if(chk == "1")
var options = first.innerHTML;
else
var options = second.innerHTML;
var out = document.getElementById('selector_c');
out.innerHTML = options;
}
</script>
</head>
<body onload="myFunction1()">
<select id="selector_main" onchange="myFunction1()">
<option value="none" disabled>--choose--</option>
<option value="1">option_A</option>
<option value="2">option_B</option>
</select>
<select id="selector_a" hidden>
<option value="none" disabled>--select--</option>
<option>op1</option>
<option>op 2</option>
</select>
<select id="selector_b" hidden>
<option value="none" disabled>--select--</option>
<option>op 3</option>
<option>op 4</option>
</select>
<select id="selector_c">
<option>--select col1 first--</option>
</select>
</body>
</html>