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 :

Récupérer les valeurs d'une liste déroulante multiple


Sujet :

JavaScript

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut Récupérer les valeurs d'une liste déroulante multiple
    bonsoir, j'aimerai savoir si c'est possible de récupérer toutes les valeurs sélectionnées dans une liste déroulante à choix multiple et d'en faire une seule variable en javascript ?

    js:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	nom = document.getElementById('nom');
    	th_nom = nom.options[contact.selectedIndex].value;
            alert(th_nom);
    exemple si je sélectionne 5 noms:

    toto
    tutu
    tata
    titi
    tyty

    comment je peux faire pour obtenir le résultat suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat = "toto tutu tata titi tyty"; // le tout en une variable
    Je dois faire un while ?

    Merci de m'aiguiller car j'ai jamais testé, je suis perdu.

  2. #2
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Ho oui par exemple un while sur le tableau "select" et puis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    resultat += th_nom + " ";

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    Euh, merci mais je ne comprends pas... Comment ça sur le select ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	contact = document.getElementById('contact');
    	th_nom = contact.options[contact.selectedIndex].value;
    	resultat ="";
     
    	while(th_nom)
    	{
    		resultat += th_nom + " ";
     
    	}
     
    	alert(resultat); // boucle infini

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    non boucle avec for sur ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (contact.options[++i])

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	contact = document.getElementById('contact');
    	th_nom = contact.options[contact.selectedIndex].value;
    	resultat ="";
    	i = 0;
    	while (contact.options[++i])
    	{
    		resultat += th_nom + " ";
    	}
     
    	alert(resultat);
    Parfait, merci cependant j'obtiens toute ma liste et non pas juste les sélections, comment faire ce test ?

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    teste le checked dans la boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	contact = document.getElementById('contact');
    	th_nom = contact.options[contact.selectedIndex].value;
    	resultat ="";
    	i = 0;
    	while (contact.options[++i])
    	{
    	 (contact.options[i].checked) && resultat += th_nom + " ";
    	}
     
    	alert(resultat);
    Voici un code sans doute plus simple à comprendre...
    Desolé j'ai été dans le && toute le journée ^^
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	contact = document.getElementById('contact');
    	th_nom = contact.options[contact.selectedIndex].value;
    	resultat ="";
    	i = 0;
    	while (contact.options[++i])
    	{
    	 if(contact.options[i].checked==true){ resultat += th_nom + " ";}
    	}
     
    	alert(resultat);

  7. #7
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Quand est-ce que th_nom est mis à jour ?

    Je m'y perds, surtout que je ne savais pas que la syntaxe && existait..

  8. #8
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    le resultat donne vide. l'alert

  9. #9
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    SpaceFrog, ne faudrait-il pas mieux incrémenter après ? Là j'ai peur qu'on ne saute deux valeurs d'un coup.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while (contact.options[i])
    {
        if(contact.options[i]...
        i++;
    }

  10. #10
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    c'est bizarre je n'ai aucune valeur dans resultat ....

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while (contact.options[i++])
    	{
    	 if(contact.options[i].checked){ resultat += contact.options[i].text + " ";}
    	}

  12. #12
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    fonctionne toujours pas
    merci de m'aider c'est sympa lol jvais chercher toute la soirée je pense ^^

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Alors ...
    J'ecris une énormité et tout le monde me suit gaiement

    depuis quand on check les options de select

    selected est nettement mieux

    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
    <body>
    <script type='text/javascript'>
    function bar(){
    var resultat=""
    var contact = document.getElementById('contact');
    var i = -1;
    	while (contact.options[++i])
    	{
    	 (contact.options[i].selected) && (resultat+= contact.options[i].value + " ");
    	}
     
    	alert(resultat);
    	}
    </script>
     
    <select id='contact' multiple>
    	<option value='sam'>sam</option>
    	<option value='jo'>jo</option>
    	<option value='phil'>phil</option>
    	<option value='mac'>mac</option>
    	<option value='flo'>flo</option>
    	<option value='mick'>mick</option>
    	<option value='pete'>pete</option>
    	<option value='jane'>jane</option>
    </select>
    <input type="button" onclick="bar()" value="go" />
    </body>

  14. #14
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    pff tu as raison lol
    Merci d'avoir vu le soucis !

    tout est nikel !

  15. #15
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Vermine,
    J'affectionne la syntaxe while avec ++i pour sa simplicité.
    à la difference de i++ l'effet de ++i est immediat l'indrement se fait d'es l'interprétaition et non après donc le premier indice testé est 0


    avec i++ il faut initialiser i =0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    et while(monarray[i++]){
    // du coup ici pour avoir l'element du while il faut prendre monarray[i-1]
    }
    en revanche avec ++i l'increment étant immediat
    on initialise i =1
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while(monarray[++i]){ 
    //ici monarray[i] correspond à l'element du while}

  16. #16
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    Merci pour cette explication complémentaire.

    Cependant, dans la collection il y a toujours quelque chose à corriger:

    D'une manière générale tout fonctionne très bien, que ce soit un par un ou par sélection multiple.

    Sauf le 1er de la liste ! j'ai beau le sélectionné, seul ou multiple il apparait pas
    je pensais que c'était à cause de l'incrémentation mais vu les commentaires plus haut, je ne sais pas.

    Dernier code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	contact = document.getElementById('contact');
    	resultat = "";
    	i = 0;
    	while (contact.options[++i])
    	{
    	 if(contact.options[i].selected){ resultat += contact.options[i].value + " ";}
     
    	}
    Que faire ?

  17. #17
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Vermine,
    J'affectionne la syntaxe while avec ++i pour sa simplicité.
    à la difference de i++ l'effet de ++i est immediat l'indrement se fait d'es l'interprétaition et non après donc le premier indice testé est 0
    Oui, je sais. C'est dit ici.

    Citation Envoyé par SpaceFrog Voir le message
    en revanche avec ++i l'increment étant immediat
    on initialise i =1
    i = -1

  18. #18
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    vermine dit:
    i = -1
    ah tu m'a sauvé lol

  19. #19
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    c'est ma journée
    au dessus je donne le bon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function bar(){
    var resultat=""
    var contact = document.getElementById('contact');
    var i = -1;
    	while (contact.options[++i])
    et en dessous je dis encore une c...
    en revanche avec ++i l'increment étant immediat
    on initialise i =1
    Bon je vais me coucher

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

Discussions similaires

  1. Réponses: 20
    Dernier message: 19/11/2016, 22h32
  2. Réponses: 3
    Dernier message: 12/05/2009, 19h07
  3. comment récupérer les valeurs d'une liste déroulante
    Par paolo2002 dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 27/06/2008, 20h05
  4. Récupérer les valeurs d'une liste déroulante
    Par s.gallauziaux dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 20/05/2008, 17h46
  5. Réponses: 11
    Dernier message: 26/04/2007, 10h40

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