2010-02-08 8 views
0

J'ai un ensemble de valeurs qui sont présentes sur le chargement de la page: par exemple [1193,1184,2372].Présélection des valeurs dans mulitselect avec jQuery

J'ai un dropdownchecklist qui peut prendre une seule valeur comme $ (". Ddl"). Dropdownchecklist() .val (1193);

Lorsque je redéfinit la liste déroulante, elle sélectionne la valeur correctement. Cependant, j'ai essayé de passer mon tableau contenant plusieurs valeurs à la méthode val() et cela ne sélectionne pas les valeurs. Je m'attendais à ça. Je ne suis pas sûr de la meilleure façon de présélectionner.

J'ai essayé d'itérer ma matrice pour créer un attribut de filtre à appliquer comme suit: $ (". Ddl [value * = '1184'] [value * = '9067'] [value * = '14841 '] "). attr (' sélectionné ',' sélectionné ');

mais cela ne fonctionne pas. Je ne veux pas devoir itérer toutes les options dans le ddl et les mettre à sélectionné si elles correspondent car il y a des centaines d'options et ce ne sera pas une bonne performance, surtout s'il n'y a que 2 options à présélectionner.

Des idées?

Répondre

2

Créer une chaîne de ceux sélectionnés pour créer la chaîne de sélecteur jQuery et le mettre dans la fonction .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'); 

Notez également, lorsque l'on compare un menu déroulant avec une valeur, vous êtes la recherche de l'élément option dans le select, pas l'élément select lui-même.

+0

J'ai réussi à trouver un résultat mais je vous ai donné la réponse car votre solution fonctionnerait aussi et vous m'avez répondu très rapidement. :) Merci. – lloydphillips

+0

Vous pariez. Heureux que ça marche! – munch

0

Je l'ai travailler avec cela, mais la réponse ci-dessus ressemble à une bonne solution:

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

Je ne sais pas ce qui est susceptible d'être plus rapide, mais les mines un peu plus propre.

Questions connexes