имеют массив значений [1,2,4], представляющий значения поля множественного выбора, как установить их как выбранные с помощью jquery или простого javascript?динамически выбирать несколько опций в поле выбора
благодарит за вашу помощь.
имеют массив значений [1,2,4], представляющий значения поля множественного выбора, как установить их как выбранные с помощью jquery или простого javascript?динамически выбирать несколько опций в поле выбора
благодарит за вашу помощь.
Попросту JavaScript:
function in_array(needle, haystack, argStrict)
{
var key = '', strict = !!argStrict;
if (strict)
{
for (key in haystack)
{
if (haystack[key] === needle)
return true;
}
}
else
{
for (key in haystack)
{
if (haystack[key] == needle)
return true;
}
}
return false;
}
var values = new Array(1, 2, 4);
var select = document.getElementById('selectName'); //Change to the id of the select
if (select)
{
for (var i = 0; i < select.options.length; i++)
{
//Select options matching array values, unselect others
select.options[i].selected = in_array(select.options[i].value, values, false);
}
}
UPDATE: Добавлен JavaScript функция in_array, которые имитируют PHP один ...
Я не очень хорошо знакомы с Javascript, но я думаю, что это:
var values = [1, 2, 4];
var sel = document.getElementsByTagName('SELECT')[0];
for (var i = 0; i < sel.options.length; i++) {
if(sel.options[i].value == 1 || sel.options[i].value == 2 || sel.options[i].value == 4)
sel.options[i].selected = 'selected';
}
Поскольку у меня еще нет 50 пунктов репутации, я не могу комментировать или исправлять сообщение выше
Так вот мой фикс к предыдущему массиву
var values = new Array(1, 2, 4); // using commas
var values = [1, 2, 4]; // using array notation
JQuery имеет утилиту под названием $.inArray(value,array)
. Вы могли бы сделать что-то вроде этого:
var array = [1,2,4];
$('#example option').each(function() {
var $th = $(this);
var value = parseInt($th.val());
if($.inArray(value,array) >= 0) {
$th.attr('selected','selected');
}
});
$.inArray()
возвращает индекс значения, если она найдена, или -1, если он не находится в массиве. Вот почему вам нужно протестировать >= 0
.
Просмотреть пример здесь-
для каждого значения в массиве вы будете перебрать всю коллекцию элементов в избранных? ты не переусердствовал? –
Да, это немного перебор, но так как многие элементы в select могут иметь одинаковое значение ... Это маловероятно, но это возможно :) Во всяком случае, с этим фрагментом, я думаю, вы поняли, как это сделать. – AlexV
Я не думаю, что разработчик должен разрешить выбор с тем же значением, что и другой, что было бы адеком поддержки. –