Выберите несколько значений в поле множественного выбора с помощью Jquery
Итак, у меня есть два множественных поля выбора, как это
<select id="foo" multiple="multiple">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
<select id="bar" multiple="multiple">
<option value="1">Opt 1</option>
<option value="2">Opt 2</option>
<option value="3">Opt 3</option>
<option value="4">Opt 4</option>
</select>
<a href="#" onclick="select()">Select</a>
Я пытаюсь сделать так, чтобы при нажатии кнопки "Выбрать" был выбран любой параметр в "#bar", который имеет то же значение, что и параметр в "#foo". В этом случае следует выбрать Opt 1 и Opt 2 в "#bar". Я понятия не имею, почему мой javascript не работает. Я знаю, что это должно быть что-то очень простое. Я просто не могу этого видеть. :( Итак, моя функция Javascript выглядит следующим образом:
function select(){
var vals = new Array();
var iter = 0;
$("#foo option").each(function(){
var v = $(this).val();
$('#bar option').each(function(){
if ($(this).val() == v)
{
vals[iter] = v;
iter++;
break;
}
});
});
$("#bar").val(vals);
}
2 ответа:
Обновление после просмотра примера Кона
$("#sel").click(function(e) { e.preventDefault(); // cancel the link itself $("#bar").val($("#foo").val()); });
<a href="#" id="sel">Select</a>
Более старый пример использования каждого
$("#sel").click(function(e) { // when link clicked e.preventDefault(); $("#foo option:selected ").each(function(){ var v = $(this).attr("value"); // first select's value $('#bar option').each(function(){ if ($(this).attr("value") == v) { $(this).attr("selected",true); // select if same value } }); }); })
Проверьте это http://jsfiddle.net/NtF8J/
Html
<select multiple> <option value="1">Option 1</option> <option value="2">Option 2</option> <option value="3">Option 3</option> <option value="4">Option 4</option> </select> <select multiple> <option value="1">Option 1</option> <option value="2">Option 2</option> <option value="3">Option 3</option> <option value="4">Option 4</option> </select> <button> random </button>
Jquery
$(function(){ $(document.body).delegate( 'select:first', 'change', function(){ $('select:not(:first)').val( $(this).val() ) } ) .delegate( 'button', 'click', function(){ $('select').val([1,2,3,4].filter(function(){return!!Math.round(Math.random() * 1)})) } ) });