IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Selection multiple dans un select multiple


Sujet :

JavaScript

  1. #1
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut Selection multiple dans un select multiple
    Salut à tous !

    Je dispose d'une page dans laquelle j'ai le code Javascript suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var valeurs = "<%=values%>".split(',');
    Je récupère donc une variable JSP qui consiste en une liste séparée par des virgules que je split() pour obtenir un tableau de string en javscript.

    Je dispose dans ma page d'un champ <select> avec selection multiple
    Maintenant je voudrai de la manière la plus simple et la plus efficace (j'essaye d'éviter les boucles imbriquées) , faire que les valeurs qui se trouvent dans mon tableau de string soient sélectionnées dans ma liste.

    J'ai essayé d'affecter directement le tableau à la liste comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.myform.pays.value=valeurs;
    mais ça ne marche pas ...

    Une idée ?

  2. #2
    Membre confirmé Avatar de Braillane
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2007
    Messages : 212
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var valeurs = "["+"<%=values%>".split(',')+"]";
    Je pense que sa devrait marché, la c'est écrit sous la forme JSOn

  3. #3
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut
    Je crois que tu n'as pas bien compris le problème.

    L'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var valeurs = "<%=values%>".split(',');
    marche parfaitement et j'obtiens mon tableau de String.

    Le problème maintenant c'est de sélectionner dans un champ de type <select> tous les éléments dont la valeur se trouve dans le tableau valeurs.

    Merci tout de meme pour ta réponse

  4. #4
    Membre confirmé Avatar de Braillane
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2007
    Messages : 212
    Par défaut
    Woops désolé! j'avais pas compris.

    Sans faire de boucle.. je seche... :d

  5. #5
    Membre expérimenté Avatar de el_pedro
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 200
    Par défaut
    Si j'ai bien compris, tu veux voir dans ton <select> tous les éléments déjà sélectionnés (ceux que tu a dans ton tableau). Pourquoi ne pas changer le background-color des <option> sélectionnés ??


    .....


    Euh, en fait je vien de relire ton post et je crois que j'ai pas pigé....

  6. #6
    Membre expérimenté Avatar de el_pedro
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 200
    Par défaut
    Je pense que tu ne peux pas le faire avec moins de deux boucles, l'une pour parcourir ton tableau et l'autre pour ton <select>

  7. #7
    Membre confirmé Avatar de Braillane
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2007
    Messages : 212
    Par défaut
    je confirme

    Il a un tableau de valeur et un select multiple avec des valeurs.
    Il veut sélectionné toutes les valeurs communes au tableau et au select multiple sans faire de boucle.
    Je crois que c'est sa

  8. #8
    Membre expérimenté Avatar de el_pedro
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 200
    Par défaut
    Sans faire de boucle........

    Tout dépend comment il construit son <select>. Mais même avec des nom de sélection correspondant aux valeurs, il faudra au minimum une boucle pour parcourir le tableau

  9. #9
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut
    Merci pour votre implication. Je crois qu'on touche au but :

    1 - Je n'ai pas dit sans faire de boucle ,j'ai dit : sans faire de boucles imbriquées. Donc une boucle c'est OK

    2- Les noms des sélections correspondent sont égales aux valeurs.

    Don je crois el_pedro que tu peux me donner ta solution .

  10. #10
    Membre expérimenté Avatar de el_pedro
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 200
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <form name="form">
     
    	<select name="select" size="6" multiple>
     
    		<option id="u">U</option>
    		<option id="v">V</option>
    		<option id="w">W</option>
    		<option id="x">X</option>
    		<option id="y">Y</option>
    		<option id="z">Z</option>
     
    	</select>
     
    </form>
     
     
    <script language="javascript">
     
    	var tab = new Array();	//Pour me faire un tableau de test
     
    	tab[0] = "v";	//Pour me faire un tableau de test
    	tab[1] = "z";	//Pour me faire un tableau de test
     
    	document.form.select.options[document.form.select.selectedIndex].selected = false;	//Je délectionne tous les options
     
    	for(var i = 0; i < tab.length; i++){
     
    		document.getElementById(tab[i]).selected = "selected";
     
    	}
     
    </script>
    Par contre je passe par des ID, je trouve ça crade mais j'ai beau chercher, pour un <select> multiple, je trouve pas d'autre solution.

  11. #11
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Pourquoi interdire les boucles imbriqués?

    Si c'est par souci de performance parce que tu as beaucoup d'options, alors probablement que le select n'est a la base pas l'objet le plus indiqué...
    Sinon, je comprend mal l'intéret

  12. #12
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut
    C'est à peu près ce que je voulais .
    D'ailleurs je trouve que c'est crade mais je ne suis pas sûr que ce soit fondé. Au fait est ce que c'est vraiment crade?

    On ne peut pas faire ça avec les valeurs des options. Genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.form.select.options["valeur ou nom de l'option"].selected = true;
    Je suppose que si oui tu l'aurais dit.

    DoubleU : oui c'est par soucis de performances et en plus je pensais trouver quelque chose de plus propre et de plus simple. Enfin si tu as d'autres idées ...

  13. #13
    Membre expérimenté Avatar de el_pedro
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 200
    Par défaut
    En fait, j'ai regarder comment cibler les <option> d'un <select>, il y a par l'index mais ça sous entend une seconde boucle de parcours, donc je n'ai pas trouvé d'autre solution que par un ID, si toi ou quelqu'un d'autre une autre proposition ça m'intéresserai. Enfin bon, j'ai essayé collé au cahier des charges et j'ai pas d'autre solution.

  14. #14
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut
    Moi aussi j'ai pensé à la solution de l'index et aux boucles imbriquées.

    Maintenant , il s'agit de décider quel est le moyen le moins CRADE ou disons le plus propre:

    - La solution avec les index et le deux boucles
    - La solution avec les id ( qui me semble pas mal sauf si elle a des inconvénients que je ne connais pas . elle en a ? )
    - une éventuelle autre solution donnée par W.

  15. #15
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    T'as combien d'options en fait? A sélectionner et sélectionnable?

    Parce que pour commencer a regarder les performances, il t'en faudrait plusieurs (dizaines de?) milliers sinon tu peux faire ce que tu veux, les performances seront largement acceptables.

  16. #16
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut
    Non, je pense que ça ne dépassera pas les centaines.

    Mais vous ne m'avez pas répondu le truc avec les id ça a un inconvénient: compatibilité , performance , autre , ...?

  17. #17
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Si ca se compte en centaines, c'est pas trop la peine de se prendre la tête

  18. #18
    Membre expérimenté Avatar de el_pedro
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 200
    Par défaut
    Il est sûr qu'avec deux boucles imbriquées, le code serai plus propre et franchement, niveau performance (à part si ta liste à plusieurs milliers d'éléments) tu ne verra pas la différence.

  19. #19
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut
    D'accord .. Je prend donc la solution des boucles imbriquées ..

    Merci pour vos conseils !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. SELECT COUNT DANS UN SELECT
    Par bernardcyril dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/09/2012, 10h42
  2. Réponses: 3
    Dernier message: 13/08/2009, 10h55
  3. Changer graisse d'une option dans un select et dans IE
    Par mioux dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 27/12/2007, 10h24
  4. selection multiple dans une zone de liste
    Par issam16 dans le forum Access
    Réponses: 1
    Dernier message: 22/06/2006, 10h44
  5. selection simple mais résultat multiple dans combobox
    Par forzaxelah dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/06/2006, 14h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo