Предварительный выбор значений в мультиселекте с помощью jQuery - PullRequest
0 голосов
/ 09 февраля 2010

У меня есть набор значений, которые присутствуют на странице загрузки: например, [1193,1184,2372].

У меня есть выпадающий список, который может принимать одно значение, например $ ( "DDL.") Dropdownchecklist () Вал (1193). *. * 1003

При повторном связывании выпадающего списка это выбирает значение правильно. Однако я попытался передать свой массив, содержащий несколько значений, в метод val (), который не выбирает значения. Я вроде ожидал этого. Я не уверен, как лучше выбрать предварительный выбор.

Я попытался выполнить итерацию моего массива для создания атрибута фильтра для применения следующим образом: $ (". ddl [value * = '1184'] [value * = '9067'] [value * = '14841']"). attr ('selected', 'selected');

но это не работает. Я не хочу повторять все параметры в ddl и устанавливать их в выбранные, если они совпадают, поскольку существуют сотни параметров, и это не будет хорошим показателем производительности, особенно если есть только 2 варианта, которые нужно предварительно выбрать.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 09 февраля 2010

Создайте строку из выбранных, чтобы создать строку селектора jQuery и поместите ее в функцию .find ():

var str = '';
var arrLength = selectedArray.length;
$.each(selectedArray, function(i){
   str += 'option[value*='+selectedArray[i]+']';
   if((i+1) != arrLength){
     str += ', ';
   }
});

$('.ddl').find("option[value*='1184'], option[value*='9067'], option[value*='14841']")
     .attr('selected','selected'); 

Также обратите внимание, что при сравнении раскрывающегося списка со значением вы ищете элемент option в select, а не сам элемент select.

0 голосов
/ 09 февраля 2010

Я понял, что это работает, но приведенный выше ответ выглядит как хорошее решение:

$.each(arr, function(i,s)
{
     $(ddl_id + ' [value*=\'' + s + '\']').attr('selected','selected');
});    

Не уверен, что может быть быстрее, но шахты немного чище.

...