2011-03-29 3 views
0

j'ai une zone de liste multi-sélection avec l'option 100+ < >plus rapide sélection de l'option plusieurs valeurs

Maintenant, j'ai 7 ou 8 valeurs qui doit être sélectionné.

Mon code est:

  var selObj = document.getElementById('list1'); 
      var len = selObj.length; 
      var selected_values = '1#2#15#34#82#96'; 
      var selected_values_array = selected_values.split('#'); 
      var alen = selected_values_array.length; 

      for (i = 0; i < len; i++) { 
       for (j = 0; j < alen; j++) { 
        if (selObj[i].value == selected_values_array[j]) { 
         selObj[i].selected = true; 
         break; 
        } 
       } 
      } 

lorsque le script est rencontré, le navigateur cesse de répondre. Je sais que mon code est mauvais, mais c'est leur façon de l'améliorer. Soit en utilisant jQuery ou javascript?

Merci

+2

Vous semblez avoir un bug dans 'pour (j = 0; i

+0

J'ai changé ce qui suit, mais le problème persiste –

Répondre

0

Que diriez-vous cela avec un peu d'aide de jQuery (il se travaille maintenant):

var selected_values = '1#2#15#34#82#96'; 
var selectors = '#list1 > option[value="' + selected_values.split('#').join('"], #list1 > option[value="') + '"]'; 
$(selectors).each(function() { 
    $(this).attr('selected', true); 
}); 

Un peu plus laid que je ne l'avais espéré. Mais salut. :)

Voir en action here. Et here is an edited version avec une boîte de sélection de taille plus grande.

+0

@ I-M-JM: Ouais désolé, laissez-moi le peaufiner un peu plus. Donnez-moi juste quelques minutes de plus. Je suis à la recherche d'un moyen de sélectionner des éléments par plusieurs attributs à la fois. Et j'ai une faute de frappe. :) –

+0

@ I-M-JM: Je l'ai fonctionné maintenant. J'espérais pouvoir sélectionner plusieurs valeurs d'attributs possibles à la fois. Mais j'ai dû enchaîner les sélecteurs complets malheureusement. Maby quelqu'un d'autre sait comment rendre la chaîne de sélecteur concaténée plus propre que ça. –

+0

On dirait bien, merci –

0

Try this ..

$('#list1 option').each(function(i) { 

    for (j = 0; j < alen; j++) { 
    if($(this).val() == selected_values_array[j]) { 
    $(this).attr("selected", true); 
    } 
    } 
}); 
Questions connexes