Preselecting valores em mulitselect com jQuery
-
19-09-2019 - |
Pergunta
Eu tenho um conjunto de valores que estão presentes no carregamento da página: eg [1193,1184,2372].
Eu tenho um dropdownchecklist que pode levar um único valor como assim $ ( "Ddl") dropdownchecklist () val (1193);..
Quando eu religar o dropdownchecklist Isso seleciona o valor corretamente. No entanto, eu tentei passar minha matriz contendo vários valores para o método val () e que não selecionar os valores. Eu meio que esperava por isso. Eu não tenho certeza a melhor forma de ir sobre pré-selecção.
Eu tentei iteração minha matriz para construir um atributo filtro para aplicar como o seguinte: $ ( "Ddl [valor * = '1184'] [valor * = '9067'] [valor * = '14841']") attr ( 'selecionado', 'selecionado').;
mas isso não funciona. Eu não quero ter que iterate todas as opções no ddl e configurá-los para selecionados se eles combinam como existem centenas de opções e isso não será bom desempenho sábio, especialmente se há apenas 2 opções a serem preseleted.
Todas as idéias?
Solução
Criar uma corda dos selecionados para criar a cadeia de seletor jQuery e colocá-lo na .find () função:
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');
Também nota, quando se compara uma gota para baixo com um valor, você está olhando para o elemento option
na seleção, não o próprio elemento select.
Outras dicas
Eu tenho que trabalhar com este mas a resposta olhares acima como uma boa solução:
$.each(arr, function(i,s)
{
$(ddl_id + ' [value*=\'' + s + '\']').attr('selected','selected');
});
Não tenho certeza que é susceptível de ser mais rápido, mas minas um pouco de.