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 :

valeur liste déroulante hors formulaire


Sujet :

JavaScript

  1. #1
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut valeur liste déroulante hors formulaire
    Bonjour,

    Normalement quand nous déclarons une liste déroulante multiple dans une form, le nom de la liste est un tableau ...

    Genre le code ci-dessous (en abrégé):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
       <form method="POST" action="controleurs/c_parcelle.php">
     
                 <select name="ld_parcelle[]" size="20" multiple>
                         ....
                  </select> 
     
                .... 
                <input type="submit" value="Activer/déactiver une parcelle" />
       </form>
    Ensuite dans le POST, nous récuppérons un tableau.

    Ma question est:
    Comment faire si nous avons la liste déroulante suivi d'un formulaire pour récupérer les valeurs choisies lors du POST (c cas est du à la composition particulière de la page)
    le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                 <select name="ld_parcelle[]" size="20" multiple>
                         ....
                  </select> 
     
       <form method="POST" action="controleurs/c_parcelle.php">
     
                 .... 
                <input type="submit" value="Activer/déactiver une parcelle" />
       </form>
    J'ai essayé en js mais le pb est que je n'arrive pas à récupérer sous forme d'un tableau. Avez vous des idées, merci, car moi et l'html/js ça fait 2

  2. #2
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Citation Envoyé par Fench Voir le message
    Bonjour,

    Normalement quand nous déclarons une liste déroulante multiple dans une form, le nom de la liste est un tableau ...
    Non pas forcément, on donne le nom qu'on veut
    Citation Envoyé par Fench Voir le message
    Ma question est:
    Comment faire si nous avons la liste déroulante suivi d'un formulaire pour récupérer les valeurs choisies lors du POST (c cas est du à la composition particulière de la page)
    le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                 <select name="ld_parcelle[]" size="20" multiple>
                         ....
                  </select> 
     
       <form method="POST" action="controleurs/c_parcelle.php">
     
                 .... 
                <input type="submit" value="Activer/déactiver une parcelle" />
       </form>
    Il faut effectivement passer par du javascript, donc tu peux te retrouver dans un cas où javascript n'est pas activé, donc sans les données.

    Sinon pour répondre à ta question, le truc est de parcourir les options de ton select. Pour chaque option sélectionnée tu peux par exemple créer dans le formulaire un champ hidden avec le même nom que ta select, et donner la valeur de l'option sélectionnée.

  3. #3
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    merci gwyohm mais j'ai pas tout bien compris

    Non pas forcément, on donne le nom qu'on veut
    ?????

    formulaire un champ hidden avec le même nom que ta select, et donner la valeur de l'option sélectionnée.
    CAD que dans le champ hidden je fais name="optionsOk[]"

    Dans mon code js fe fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            function changeLbParcelleValue() {
                var valeurLb = new Array();
                var liste = document.getElementById('selectParcelle');
                var nopt = liste.options.length;
                var i, j=0;
                for (i=0; i<nopt; i++) {
                    if (liste.options[i].selected)
                        valeurLb[j++] = liste.options[i].value;
                }
                document.getElementById('inputParcelle').value = valeurLb;
            }
    ce code est appelé dans la form et les id sont tels que:
    selectParcelle pour la liste déroulante multiple
    inputParcelle pour le champ hidden


    Le problème est que j'obtiens dans mon controlleur une liste séparée de "," et non un tableau ... pourquoi ?

    Merc i encore

  4. #4
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    est ce que c'est si dur d'ajouter les tag form ou créer un select caché?
    (Crée un autre formulaire...)

  5. #5
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Citation Envoyé par Fench Voir le message
    CAD que dans le champ hidden je fais name="optionsOk[]"

    Dans mon code js fe fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            function changeLbParcelleValue() {
                var valeurLb = new Array();
                var liste = document.getElementById('selectParcelle');
                var nopt = liste.options.length;
                var i, j=0;
                for (i=0; i<nopt; i++) {
                    if (liste.options[i].selected)
                        valeurLb[j++] = liste.options[i].value;
                }
                document.getElementById('inputParcelle').value = valeurLb;
            }
    ce code est appelé dans la form et les id sont tels que:
    selectParcelle pour la liste déroulante multiple
    inputParcelle pour le champ hidden


    Le problème est que j'obtiens dans mon controlleur une liste séparée de "," et non un tableau ... pourquoi ?
    Tu obtiens une liste séparée par des virgules pcq c'est la serialisation standard d'un tableau en javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     document.getElementById('inputParcelle').value = valeurLb;
    Tu affectes à la valeur un champ un tableau. Il y a donc un toString() qui est fait sur ton tableau.

    Soit côté serveur, tu gères ce cas,
    Soit comme le propose Matthieu2000, tu crées un select invisible dans ton formulaire qui reprend l'état de celui que tu veux poster
    Soit comme je disais, tu créé des champs cachés avec les valeurs (1 champ caché par option sélectionnée)...

  6. #6
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    ok ok pour la sérialisation ET c'est vrai que j'ai pas l'habitude de ce langage (je ne m'en rappelé plus ).

    Donc premier pb résolu sur les valeurs, c ok.


    Sinon:
    Soit comme le propose Matthieu2000, tu crées un select invisible dans ton formulaire qui reprend l'état de celui que tu veux poster
    Je vais regardé ça sur le web ...

    ET:
    Soit comme je disais, tu créé des champs cachés avec les valeurs (1 champ caché par option sélectionnée)...
    là j'ai rien compris ... mais l'histoire un champ par option c pas dynamique pour mon cas d'une liste construite à partir d'une table postgres, non ???

    Merci dans tous les cas je regarde un peu le select invisible et je concluerais ce post

  7. #7
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour à tous,

    J'ai opté pour la première solution, celle commencée avec du js. ça marche bien une fois désérialisé sur le serveur.

    Merci

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

Discussions similaires

  1. [AC-2007] Modification de valeur d'une liste déroulante sur formulaire
    Par cocoda dans le forum IHM
    Réponses: 4
    Dernier message: 11/10/2012, 17h16
  2. Réponses: 2
    Dernier message: 20/03/2008, 10h19
  3. Liste déroulante recherche formulaire
    Par ivan7 dans le forum Access
    Réponses: 17
    Dernier message: 22/06/2006, 14h37
  4. liste déroulante dans formulaire continu
    Par remi59 dans le forum Access
    Réponses: 7
    Dernier message: 31/03/2006, 09h40
  5. [VBA] choix valeur liste déroulante (champ texte d'1 table)
    Par Lou Pitchoun dans le forum Access
    Réponses: 14
    Dernier message: 22/02/2006, 10h27

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