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 :

Champs dynamiques : listes déroulantes liées


Sujet :

JavaScript

  1. #1
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut Champs dynamiques : listes déroulantes liées
    Salut les scripteurs !

    J'entends déjà marmoner dans leur barbe les grincheux : "Question posée 10000 fois"... "utilise la fonction rechercher"... "regarde dans la faq"... "patati patata"...
    Sachez que je vous ai devancé et que je sais lier des select entre elles. na. Là dessus aucun soucis.

    En fait je suis à la recherche d'une bibliothèque permettant de gérer un ensemble de regles qui permettent de rendre certaines select box influantes sur d'autres. Et qui gère les select multiples par la même occasion du genre
    S1(A) => S2(A,B,C)
    S1(B) => S2(C,D,E)
    Si je selectionne A, je me retrouve avec A,B,C dans S2, si je selectionne B, je me retrouve avec C,D,E et si je selectionne A+B je me retrouve avec A,B,C,D,E
    ....

    Et aussi les règles en cascade si possible. Par exemple, si à la suite d'application de regles je me retrouve avec une seule valeur dans ma select box, appliquer les regles pour cette select box afin de modifier les autres qui en dépendent...

    Dernière option qu'elle serait la bienvenue : dépendances multiples S1(A) + S3(C) => S2(D,E)

    Voilà, j'ai un peu l'impression de demander la lune.
    Si vous avez un framework js qui fait ça ou une appli open source basée sur un systeme équivalent, je suis preneur


    Merci d'avance,
    Mr N.

    PS: pas besoin de xmlhttprequest, tout doit se passer côté client

    Exemple :
    http://www.mattkruse.com/javascript/dynamicoptionlist/

  2. #2
    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
    salut,
    alors comme ça tu sais rechercher dans la faq ? :p

    Je ne sais pas si tu arrivera a trouver ca tout fais.
    Malheureusement je n'ai pas ca sous la main.

    Ca risque d'être lourd coté client par contre.
    Enfin lourd, je m'entend, eternel discussion sur xmlhttp, est ce plus rentable de faire plusieurs petits appels serveurs que d'avoir une grosse source ...

    Si dans ton cas, tu sais a l avance toutes les combinaisons possibles, tu peux effectivement faire du coté client a 100%.
    Par contre tu vas avoir un code javascript assez conséquent, ne serais ce que les données qui vont alimenter tes selects.

    L'avantage pour toi a utiliser xmlhttp serais peut etre que tu pourrais gérer tout le calcul sur le serveur et l'encapsuler dans des objets si ca te facilite la vie.
    Bon tu me diras en js aussi tu peux te faire des objets mais tu as peut etre plus de facilité en php qu'en js ?
    Tu pourrais aussi stocker tes contraintes dans des fichiers xml (bopn ca se trouve t'en a pas besoin du tout).

    Je sais que tout ce long discours t'avance certainement pas, si tu te lances dans le dev de ce truc, on te filera un coup de main
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Le monsieur il a dit pas d'xmlhttp
    Je doute de toutes facons que ca me serait utile de commencer dans cette voie, car à partir du moment ou je sais le faire en php, je sais le faire en js ^^

    Le développer ne me pose pas de problème (enfin si, je perds un peu de cheveux mais ca fait parti du métier) je veux seulement être sur de ne pas réinventer la roue sachant qu'il existe un truc de la mort-qui-tue-la-vie qui feeds my needs.
    Visiblement je ne suis pas le seul à m'interesser à ce genre de truc, vu la proposition de mattkruse.com (cf premier post)

  4. #4
    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
    Et tu peux pas te servir de son truc ?
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    j'arrive pas à le tester, je comprends pas

    A première vue je trouve la gestion des regles un peu pourrites : on ajoute des dépendances :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dol.addDependentFields("Field1","Child1","Child2");
    dol.addDependentFields("Field2","Child3","Child4");
    mais apres pour les options qui débouchent sur d'autres options ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dol.forValue("Value1").addOptions("Suboption1","Suboption2","Suboption3");
    Or je sais pas ce qui se passe si Value1 fait partie de field1, field2 ou des deux
    Et puis ces suboptions, elles sont rajouté à quel champs ? Child1 ? Child2 ?...
    Bref c'est un peu zarb et brouillon pour moi.

  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 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    un peu pourrites
    et une bibliothèque de français ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  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
    euh hors sujet mais ca va t 'aider pour un autre de tes posts, je viens de tomber sur ca, visiblement, c est ce que tu utilisais l'autre jour
    Un ti coup de doc t'aidera peut etre

    Pour ton truc, je regarde et essayes de le faire marcher
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  8. #8
    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
    tu devrais regarder directement avec le lien show source qui se trouve au dessus des selects, il te met l'exemple avec les selects en question.

    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
    var makeModel = new DynamicOptionList("MAKE","MODEL","TYPE");
    makeModel.addDependentFields("MAKE2","MODEL2","TYPE2");
     
    makeModel.forValue("Ford").addOptions("Fiesta","Focus","Taurus"); // Add options if VALUE of option is selected
    makeModel.forText("Honda").addOptions("Civic","Accord","Prelude"); // Add these options if TEXT of option is selected
     
    makeModel.forValue("Ford").setDefaultOptions("Fiesta");
    makeModel.forText("Honda").setDefaultOptions("Accord");
    makeModel.forValue("Ford").forValue("Taurus").addOptions("2-door","4-door");
     
    makeModel.forField("MODEL").setValues("Focus","Taurus");
    makeModel.forField("TYPE").setValues("2-door");
    makeModel.forField("MODEL2").setValues("Civic","Prelude");
     
    makeModel.forValue("Toyota").addOptionsTextValue("Camry","10-CAMRY","Corolla","20-COROLLA","Celica","30-CELICA"); // Add options with values different from text
    C'est plus facile a comprendre
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  9. #9
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    C'est bon, prototype c'est de l'histoire ancienne je le maitrise presque.

    On voit tout de suite que la Grenouille est moins bien inspirée que pour l'histoire de ma fonction $(...)

  10. #10
    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 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    j'aime pas les librairies...
    ça fait toujours ajouter des usines à gaz ...

    ou alors c'est des librairies persos dont je connais par coeur toutes les focntions ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par siddh
    tu devrais regarder directement avec le lien show source qui se trouve au dessus des selects, il te met l'exemple avec les selects en question.
    Déjà fait.
    Citation Envoyé par siddh
    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
    var makeModel = new DynamicOptionList("MAKE","MODEL","TYPE");
    makeModel.addDependentFields("MAKE2","MODEL2","TYPE2");
     
    makeModel.forValue("Ford").addOptions("Fiesta","Focus","Taurus"); // Add options if VALUE of option is selected
    makeModel.forText("Honda").addOptions("Civic","Accord","Prelude"); // Add these options if TEXT of option is selected
     
    makeModel.forValue("Ford").setDefaultOptions("Fiesta");
    makeModel.forText("Honda").setDefaultOptions("Accord");
    makeModel.forValue("Ford").forValue("Taurus").addOptions("2-door","4-door");
     
    makeModel.forField("MODEL").setValues("Focus","Taurus");
    makeModel.forField("TYPE").setValues("2-door");
    makeModel.forField("MODEL2").setValues("Civic","Prelude");
     
    makeModel.forValue("Toyota").addOptionsTextValue("Camry","10-CAMRY","Corolla","20-COROLLA","Celica","30-CELICA"); // Add options with values different from text
    C'est plus facile a comprendre
    Ben c'est vite dit !

    Prenons cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    makeModel.forValue("Ford")............
    "Ford" fait partie de quel select ? MAKE ? MAKE2 ?
    Visiblement les deux. Et si je veux pas ? Je peux tres bien avoir deux select box qui n'ont rien à voir avec des _value_ identiques...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <select name="s1">
       <option value="v1">HAAAA</option>
    </select>
    <select name="s2">
       <option value="v1">HOOOO</option>
    </select>

  12. #12
    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
    oui mais lui il a tout mis dans le meme DynamicOptionList pour les gérer ensemble.

    Il suffit que t'en instancie deux et pi vala

    Ou alors, t'aura un enchaiment de forValue avec deux valeurs identiques.
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  13. #13
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Soit. voici un exemple de code. j'aimerais que quand s1 = v3, (none, v4, v5, v6) soient proposé pour s3. Comment tu fais avec son truc ?
    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
    34
    35
    36
    37
    38
    39
    40
    <html>
        <head>
            <script src="DynamicOptionList.js" type="text/javascript"></script>
        </head>
        <body>
            <fieldset>
                <legend>Champs dynamiques</legend>
                <select id="s1" size="4">
                    <option value="100">None</option>
                    <option value="v1">PA</option>
     
                    <option value="v2" selected="selected">PB</option>
                    <option value="v3">PC</option>
                </select>
                <select id="s2">
                    <option value="100">None</option>
                    <option value="v1" selected="selected">Q1</option>
                    <option value="v2">Q2</option>
     
                    <option value="v3">Q3</option>
                </select>
                <select id="s3" size="7">
                    <option value="100">None</option>
                    <option value="v1">TA</option>
                    <option value="v2">TB</option>
                    <option value="v3" selected="selected">TC</option>
     
                    <option value="v4">TD</option>
                    <option value="v5">TE</option>
                    <option value="v6">TF</option>
                </select>
            </fieldset>
            <script type="text/javascript">
            var dol = new DynamicOptionList();
            dol.addDependentFields("s1","s3");
            dol.forValue("v1").addOptions("v4"); //????????
            </script>
        </body>
     
    </html>

  14. #14
    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
    mwarf meme son code a lui j arrive pas a le faire marcher et j'ai pas d'erreur qui remonte
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  15. #15
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Merci de confirmer siddh que son code il est pourrite
    Allez zou, à la poubelle ! Au suivant ! d'autres propositions ? même si vous n'aimez pas les librairies

Discussions similaires

  1. [XL-2010] Listes déroulantes liées et aux champs soumis à condition
    Par Clariment dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/06/2015, 10h56
  2. Listes déroulantes liées dynamiques
    Par annigannelaure.david dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/01/2012, 12h56
  3. Liste déroulante liée à plusieurs champs textes
    Par moimeme340 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/05/2011, 08h16
  4. problème de listes déroulantes liées dynamiques avec jsp
    Par solfegepro dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 09/08/2007, 17h11
  5. Listes déroulantes liées entre elles
    Par denisC dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 27/07/2002, 15h53

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