Listes déroulantes
Fermé
Slider8
Messages postés
3
Date d'inscription
dimanche 17 mars 2013
Statut
Membre
Dernière intervention
21 mars 2013
-
Modifié par Slider8 le 17/03/2013 à 19:13
charcom Messages postés 61 Date d'inscription jeudi 24 janvier 2013 Statut Membre Dernière intervention 3 novembre 2022 - 21 mars 2013 à 17:42
charcom Messages postés 61 Date d'inscription jeudi 24 janvier 2013 Statut Membre Dernière intervention 3 novembre 2022 - 21 mars 2013 à 17:42
A voir également:
- Listes déroulantes
- Créer des listes déroulantes excel - Guide
- Excel listes déroulantes en cascade - Guide
- Fusionner deux listes excel - Guide
- Problème listes déroulantes bloquées - Forum Excel
- Listes déroulantes en cascade ✓ - Forum Javascript
3 réponses
Bonjour,
Je souhaiterais avoir des listes liées dynamiques (ou pas, selon ce qui est possible de faire)
Si vous voulez un site dynamique il faut utiliser une base de données et PHP(ou autre langage serveur, mais php est adapté et gratuit).
En effet javascript s'exécute sur l'ordinateur de l'internaute donc tout ce qui se fera avec javascript doit se faire avec les données chargées par la page.
Ce qui réponds exactement à votre question c'est AJAX: Asynchronous Javascript And Xml qui utilise du javascript et des données extérieures(métadonnées) en XML qui seront bien sûr envoyé par le serveur(PHP) ou par tout autre moyen nécessaire.
Le fait d'avoir des métadonnées permet de ne plus recharger d'informations pour jongler avec les listes car leur contenu sera stocké par xml(comme une base de données temporaire mais qui doit recevoir des informations de plus haut).
Donc la réponse n'est pas dans le script mais dans les moyens que vous employez. Faire 4 listes dynamique liée est quand même assez complexe techniquement.
Je souhaiterais avoir des listes liées dynamiques (ou pas, selon ce qui est possible de faire)
Si vous voulez un site dynamique il faut utiliser une base de données et PHP(ou autre langage serveur, mais php est adapté et gratuit).
En effet javascript s'exécute sur l'ordinateur de l'internaute donc tout ce qui se fera avec javascript doit se faire avec les données chargées par la page.
Ce qui réponds exactement à votre question c'est AJAX: Asynchronous Javascript And Xml qui utilise du javascript et des données extérieures(métadonnées) en XML qui seront bien sûr envoyé par le serveur(PHP) ou par tout autre moyen nécessaire.
Le fait d'avoir des métadonnées permet de ne plus recharger d'informations pour jongler avec les listes car leur contenu sera stocké par xml(comme une base de données temporaire mais qui doit recevoir des informations de plus haut).
Donc la réponse n'est pas dans le script mais dans les moyens que vous employez. Faire 4 listes dynamique liée est quand même assez complexe techniquement.
Slider8
Messages postés
3
Date d'inscription
dimanche 17 mars 2013
Statut
Membre
Dernière intervention
21 mars 2013
Modifié par Slider8 le 21/03/2013 à 11:54
Modifié par Slider8 le 21/03/2013 à 11:54
J'apporte du nouveau.
J'ai trouvé une piste intéressante.
Il n'y a pas de liens sur la dernière liste : c'est un message d'alerte qui s'affiche.
Est-ce que quelqu'un a une idée de comment remplacer cela par des liens ?
Je choisis dans la troisième listes une des options qui sont proposées, bam ça m'ouvre un lien ?
Du coup, je ne vois pas comment utiliser <optgroup> dans tout ce code puisque ça passe par le javascript !
Le code :
J'ai trouvé une piste intéressante.
Il n'y a pas de liens sur la dernière liste : c'est un message d'alerte qui s'affiche.
Est-ce que quelqu'un a une idée de comment remplacer cela par des liens ?
Je choisis dans la troisième listes une des options qui sont proposées, bam ça m'ouvre un lien ?
Du coup, je ne vois pas comment utiliser <optgroup> dans tout ce code puisque ça passe par le javascript !
Le code :
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Liste sans btn en JS avec lien sur la troisème liste</title> <script type="text/javascript"> var categories = []; categories["startList"] = ["Wearing Apparel","Books"] categories["Wearing Apparel"] = ["Men","Women","Children"]; categories["Books"] = ["Biography","Fiction","Nonfiction"]; categories["Men"] = ["Shirts","Ties","Belts","Hats"]; categories["Women"] = ["Blouses","Skirts","Scarves", "Hats"]; categories["Children"] = ["Shorts", "Socks", "Coats", "Nightwear"]; categories["Biography"] = ["Contemporay","Historical","Other"]; categories["Fiction"] = ["Science Fiction","Romance", "Thrillers", "Crime"]; categories["Nonfiction"] = ["How-To","Travel","Cookbooks", "Old Churches"]; var nLists = 3; // number of select lists in the set function fillSelect(currCat,currList){ var step = Number(currList.name.replace(/\D/g,"")); for (i=step; i<nLists+1; i++) { document.forms['tripleplay']['List'+i].length = 1; document.forms['tripleplay']['List'+i].selectedIndex = 0; } var nCat = categories[currCat]; for (each in nCat) { var nOption = document.createElement('option'); var nData = document.createTextNode(nCat[each]); nOption.setAttribute('value',nCat[each]); nOption.appendChild(nData); currList.appendChild(nOption); } } function getValue(L3, L2, L1) { alert("Your selection was:- \n" + L1 + "\n" + L2 + "\n" + L3); } function init() { fillSelect('startList',document.forms['tripleplay']['List1']) } navigator.appName == "Microsoft Internet Explorer" ? attachEvent('onload', init, false) : addEventListener('load', init, false); </script> </head> <body> <form name="tripleplay" action=""> <select name='List1' onchange="fillSelect(this.value,this.form['List2'])"> <option selected>Make a selection</option> </select> <select name='List2' onchange="fillSelect(this.value,this.form['List3'])"> <option selected>Make a selection</option> </select> <select name='List3' onchange="getValue(this.value, this.form['List2'].value, this.form['List1'].value)"> <option selected >Make a selection</option> </select> </form> </body> </html>
charcom
Messages postés
61
Date d'inscription
jeudi 24 janvier 2013
Statut
Membre
Dernière intervention
3 novembre 2022
5
Modifié par charcom le 21/03/2013 à 17:44
Modifié par charcom le 21/03/2013 à 17:44
Bonjour Slider8,
En transformant tes listes en "liens", cela te permettra effectivement de traiter les données et éventuellement les conserver (je pense que c'est dans la récupération de tes données que PHP est nécessaire).
Voici un code qui transformera tes menus déroulants en liens :
Tu mets ceci entre <head> et </head> :
puis en lieu et place de ton menu déroulant :
Bien sûr, tu mets les liens corrects dans Value et les bons intitulés à la place de option 1, option 2, etc.
En transformant tes listes en "liens", cela te permettra effectivement de traiter les données et éventuellement les conserver (je pense que c'est dans la récupération de tes données que PHP est nécessaire).
Voici un code qui transformera tes menus déroulants en liens :
Tu mets ceci entre <head> et </head> :
<script language="JavaScript"> function ChangeUrl(formulaire) { if (formulaire.valider.selectedIndex != 0) { window.self.location.href = formulaire.valider.options[formulaire.valider.selectedIndex].value; } } </script>
puis en lieu et place de ton menu déroulant :
<form> <select name="valider" size=1 onChange="ChangeUrl(this.form)"> <option selected>Faire un choix</option> <option value="page1.php">option 1</option> <option value="page2.php">option 2</option> </select> </form>
Bien sûr, tu mets les liens corrects dans Value et les bons intitulés à la place de option 1, option 2, etc.
17 mars 2013 à 21:36
Mais pour le moment, je n'ai pas les compétences nécessaire.
Dites-vous que, pour faire ce que je demande (sans forcément faire du dynamisme, en tout cas, pas plus que ce qui est écrit plus haut), il faut impérativement passer par du PHP ?
Je préfère avoir quelque chose qui ressemble au code que j'ai posté, qui fonctionne, mais seulement pour deux listes. Il me faut juste quatre liste si c'est possible.