2010-08-31 5 views
4

Dans mon application Web, une méthode renvoie une liste de tableaux contenant les ID des options de sélection qui doivent être sélectionnées. Il est difficile de les sélectionner tous en utilisant les méthodes DOM.Comment sélectionner plusieurs options dans plusieurs listes de sélection en utilisant jquery?

Y at-il un moyen de le faire en utilisant jQuery.

Toute suggestion serait plus sensible ...

Merci à l'avance !!!

+3

@treeface - il est assez clair ce qu'il veut ... En fait – Marko

Répondre

2

EDIT: Sur la base de votre commentaire ci-dessous, vos données regardent le code ci-dessous.

Il y a un problème. Il n'est pas valide pour un attribut d'ID HTML de commencer par un nombre. Les identifiants doivent commencer par une lettre. Je vais quand même vous montrer la solution, mais vous devez corriger les ID.

var array = [{respID:1, respName:null}, 
      {respID:2, respName:null}, 
      {respID:3, respName:null}, 
      {respID:4, respName:null}, 
      {respID:5, respName:null} 
      ]; 

$.each(array, function(i,val) { 
    $('#' + val.respID).attr("selected", "selected"); 
}); 

Maintenant, cela vous donnera la valeur de respID à chaque itération de la boucle.

Mais encore une fois, les ID HTML ne peuvent pas commencer par un nombre. Je suggère de mettre à jour vos attributs d'identification HTML à quelque chose comme id_5 au lieu de 5.

<select> 
    <option id="id_1" value="some value">some text</option> 
    <option id="id_2" value="some value">some text</option> 
    <option id="id_3" value="some value">some text</option> 
    ... 
</select> 

Ensuite, vous faites ceci:

$.each(array, function(i,val) { 
    $('#id_' + val.respID).attr("selected", "selected"); 
}); 
+0

Ma liste de tableau est comme ceci {respID: 1, respName: null}, {respID: 2, respName: null}, {respID: 3, respName: null}, {respID: 4, respName: null}, {respID: 5, respName: null} ] Il est créé dynamiquement en cours d'exécution –

+0

Je veux les sélectionner avec les ID –

+0

@MaRaVaN - OK, c'est un peu différent. Je vais mettre à jour dans une minute. – user113716

4

En utilisant jQuery, vous pouvez simplement appeler attr("selected", true) sur la collection d'éléments. Tout ce que vous avez à faire est d'obtenir le droit de sélection:

$('#opt1, #opt2, #opt3').attr("selected", true); 

http://api.jquery.com/attr/

+0

sélectionné ne prend pas vrai/faux, essayez avec « false » et sera toujours affiché comme sélectionné. – Marko

+0

@Marko: Si nous parlions d'attributs, vous auriez raison. Cependant, la fonction * attr() * de jQuery vérifie le premier paramètre pour voir s'il s'agit d'un nom de propriété valide et le définit en premier. La propriété * selected * attend un booléen (vrai ou faux) et dans ce cas "selected" serait une valeur invalide. jQuery fait cela pour contourner les problèmes avec * setAttribute() * dans Internet Explorer. –

+0

@Marko - 'false' ne fonctionne pas :) Essayez-le ici: http://jsfiddle.net/nick_craver/Qxhbw/ –

1

Il est en fait assez simple, tout ce que vous devez faire est d'ajouter un attribut de sélectionné pour les éléments que vous voulez.

$("#id1, #id2", "select").attr("selected", "selected"); 

Vous pouvez les filtrer par valeur trop

$("option[value=someText]", "select").attr("selected", "selected"); 
+0

Hey, merci pour votre réponse ... Ces multiples options de sélection sont générées dynamiquement. La liste de tableau est comme ceci ... EmployeeManagement.getSelOptions (id, function (resp) {// Code Jquery ici ...} Le "resp" est le tableau de liste ici .... Comment dois-je l'utiliser variable unique, je dois itérer à travers une boucle ... ??? Merci encore –

+0

Voir la réponse @ Patrick et @ Vadim pour la boucle à travers les ID – Marko

1

Si ids est un tableau d'ID, le code devrait fonctionner:

$.each(ids, function() { $("#" + this).attr("selected", true); }); 
Questions connexes