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 :

listes déroulantes liées et récupération des données


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Points : 47
    Points
    47
    Par défaut listes déroulantes liées et récupération des données
    Bonjour,
    J'ai un petit problème de récupération des données d'une liste déroulante.
    je me suis très largement inspirée de la FAQ pour voir ce que donnait de faire une première liste dans laquelle on a une dizaine de choix, parmi lesquels on doit en fait 5 au max qui s'inscrive dans une seconde liste.
    Voici la fonction, à peine corrigée que l'on peut trouver dans la FAQ :
    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
    function ajout(listeDep){
        var existe = 0;
        if(listeDep.options[listeDep.selectedIndex].value == 0){
        }
        else{
            for(i=1;i< document.getElementById('choix').length ;i++){
                if(document.getElementById('choix').options[i].text == listeDep.options[listeDep.selectedIndex].text){
                    existe = 1;
                }
                else{
                    if(existe == 1){
                        existe = 1;
                    }
                    else{
                        existe = 0;
                    }
                }
            }
               if(existe == 0){
                var option = new Option(listeDep.options[listeDep.selectedIndex].text,listeDep.options[listeDep.selectedIndex].value);  
                document.getElementById('choix').options[0].text = "-- Liste des fonctions séléctionnées --";
                document.getElementById('choix').options[0].value = 0;
                  while(document.getElementById('choix').length < 6) { 
                    document.getElementById('choix').options[(document.getElementById('choix').length)] = option;
                    }
           }  
               else{
                   alert('Cette fonction est déjà séléctionnée !!!');
               }
        }
    }
    Ensuite, j'ai mon formulaire html comme suit :
    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
    <table >    
        <TD width='12%' align='left'>
                <select name='tt_choix' size='10' ondblclick='ajout(this)' >
                    <option value='choix1'>choix1</option>
                    <option value='choix2'>choix2</option>
                    <option value='choix3'>choix3</option>
                    <option value='choix4'>choix4 </option>
                    <option value='choix5'>choix5 </option>
                    <option value='choix6'>choix6</option>
                    <option value='choix7'>choix7</option>
                    <option value='choix8'>choix8</option>
                    <option value='choix9'>choix9</option>
                </select>
            </TD>
            <TD >
                <select name='choix' id='choix' size='6' >
                </select>
            </TD>
        </TR>
    Tout marche comme il faut à l'affichage. J'ai bien mes infos qui passent d'une fenêtre à l'autre.
    Mon problème est le suivant : je récupère les données du formulaire, donc de la seconde fenêtre, via un script perl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @tbl=param('choix');
    $chx_1=$tbl[0];
    $chx_2=$tbl[1];
    $chx_3=$tbl[2];
    $chx_4=$tbl[3];
    $chx_5=$tbl[4];
    Or en fait, il ne récupère rien... La variable @tbl est vide...
    Est-ce que quelqu'un a une idée du pourquoi du comment ?
    Merci beaucoup.

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    "fenêtres"?

    tu ouvres plusieurs fenêtres?

  3. #3
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    attention, un select ne te retourne que l'element selectionné, si tu veux un choix multiple, il faut rajouter multiple="multiple" dans ta balise select et aller faire des selections a la souris dedans.
    (et peut etre mettre des [] dans le nom du select mais je connais pas ton langage coté serveur)

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Points : 47
    Points
    47
    Par défaut
    attention, un select ne te retourne que l'element selectionné, si tu veux un choix multiple, il faut rajouter multiple="multiple" dans ta balise select
    Je m'en doutais un peu que le select ne prenait qu'une réponse... Mais là il n'en prend aucune... même avec multiple="multiple" !
    Galère !

    Pour répondre à javatwister : le terme de "fenêtre" est mal choisi. Disons, qu'il s'agit de deux zones de liste, comme sur l'image jointe.
    Nom : Image1.jpg
Affichages : 97
Taille : 20,2 Ko
    Moi, je voudrais qu'il ne retienne que les choix de l'encart de droite (choix5, choix2, choix8,choix9, dans ce cas) et me les transmette avec le submit du formulaire. Seulement il ne transmet rien...
    Des idées ?
    Merci.

  5. #5
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ben faut en selectionner une sinon ca renverra rien
    met le selected de tes options a true

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Points : 47
    Points
    47
    Par défaut
    J'ai compris ce qu'il se passe !!! C'est qu'en fait, comme je croyais bêtement qu'il allait me prendre toutes les options de mon second encart(vu que c'est ce que je viens de sélectionner un à un dans le premier), je ne les sélectionnais pas (une seconde fois) à la souris dans la zone de droite...

    Alors question subsidiaire : comment faire pour ne pas être obligé de surligner à la souris, les options que l'on vient déjà de choisir !

    Merci à ceux qui auront des idées !

    PS : merci à siddh pour le 'multiple' !!! ca aide

  7. #7
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Citation Envoyé par siddh
    ben faut en selectionner une sinon ca renverra rien
    met le selected de tes options a true

  8. #8
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Points : 47
    Points
    47
    Par défaut
    Ca y est j'ai trouvé !!!!
    En effet il faut mettre 'selected' dans les options,mais comment ? Si on regarde la partie correspondante à cet encart dans l'HTML, on n'a pas accès aux options, puisque elles s'inscrivent au fur et à mesure des choix sélectionnés. C'est donc bien dans le Javascript qu'il faut intervenir.
    Et c'est surtout à ce niveau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
               if(existe == 0){
                var option = new Option(listeDep.options[listeDep.selectedIndex].text,listeDep.options[listeDep.selectedIndex].value);  
                document.getElementById('choix').options[0].text = "-- Liste des fonctions séléctionnées --";
                document.getElementById('choix').options[0].value = 0;
                  while(document.getElementById('choix').length < 6) { 
                    document.getElementById('choix').options[(document.getElementById('choix').length)] = option;
                    }
           }  
               else{
                   alert('Cette fonction est déjà séléctionnée !!!');
               }
    En fait pour être sûr que ce qu'on a sélectionné une première fois soit sélectionné définitivement, il faut ajouter deux petite chose dans la définition de la nouvelle option :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
         
     
    var option = new Option(listeDep.options[listeDep.selectedIndex].text,listeDep.options[listeDep.selectedIndex].value,true,true );
    Voilà, vous savez tout !
    Merci pour votre aide.

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

Discussions similaires

  1. [YouTube] Choix vidéo liste déroulante et mis à jour des données
    Par DavidWebSolution dans le forum APIs Google
    Réponses: 2
    Dernier message: 07/02/2015, 10h35
  2. Liste déroulante avec "Recordset" récupérer des données sur access
    Par Khalid89 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/04/2013, 18h17
  3. [AC-2007] listes déroulantes liées et affichage des données
    Par acabat dans le forum IHM
    Réponses: 9
    Dernier message: 06/11/2010, 10h05
  4. Réponses: 1
    Dernier message: 18/04/2008, 14h20
  5. Liste déroulante liée à une base de donnée
    Par GruZloR dans le forum Excel
    Réponses: 4
    Dernier message: 05/01/2008, 16h55

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