L'éditeur JavaScript
Visiteur non-identifié | Identifiez-vous | Devenir membre
Code perdu ? | Combien de visiteurs sur votre site ?
Rechercher :
Page d'accueil
     Home Page

JavaScript
     Tous les scripts
     Proposer un script
     Recherche de script
     AJAX
     Cours de JavaScript
     Liste de discussion
     Forums

Services :
     CountUs
     myCircle
     ClickInText
     XooIt

Trucs et astuces :
     HTML / CSS
     PHP / MySQL
     Réferencement
     Graph / Présentation
     Toutes les astuces
     Ajouter un article

MailingList :
122609 abonnés

Annuaire webmaster :      Hebergement web
     Referencement
     Sites webmasters
     XHTML - CSS2
     PHP
     Affiliation - Pub
     FAI

     Annuaire webmaster

Ressources pour webmasters :
     Kit graphique
     Foire aux questions
     Les membres
     Devenir annonceur
     Faire un lien
     Contact

Partenaire :
     Compteur live
     Créer un forum
     Le PHP facile
     Comscripts
     Liens sponsorisés
     Blog
     Page Rank
     Gifs animés, f...
     Poésie et cita...
     Azote.org - no...
     Easy-script.com
     Web creation ...
     Je crée mon site
     Outils de créa...
     Electroniq...
     K i s s design
     Créer son site...
     Les autres
     Votre site ici ?


Le forum ] [ Préférences ] [ Nouveau sujet ] [ Répondre ] [ Recherche ] [ Vos sujets ] [ Tous lus ] [ Flux RSS ]


[ Forums >> Webmasters >> Général >> Gestion de listes liées ]

> Gestion de listes liées
[ Posté par apz ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 05-12-2009 à 02:24 | 9 messages ]

Bonjour,

Dans un formulaire, j'ai quatres listes dont les trois dernières sont cachées.

J'aimerais afficher les trois listes avec une création dynamique de la quatrième liste et cela, selon le choix sélectionner dans la premiere liste.

Voila ce que j'ai pu bricoler :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> <title>Lister les intervenants</title> <style type="text/css"> body { margin: 0; padding: 0; } #global { position:absolute; left: 50%; top: 50%; width: 700px; height: 400px; margin-top: -200px; margin-left: -350px; border: 1px solid #333; background-color: #eee; } #liste { width: 280px; left: 10%; top: 10%; position: relative; } .titre{ color: #FFF; font-family: Tahoma; font-size: 12px; background-color: #0000FF; text-align: center; } .etq{ font-family: Tahoma; color: #000; font-size: 12px; text-align: left; width: 120px; display: inline-block; } .chp {text-align: left ;} .bouton {float: right ; background:red;} .tbl { border: 1px solid #0000FF;width:98%} </style> <script type="text/javascript" language="javascript"> var liste_4_0 = ["E1","E2","E4"]; var liste_4_1 = ["théâtre","informatique","langue vivante"]; var liste_4_2 = ["Congnac la ville","Bussines","St-Junien"]; var liste_4_3 = ["BELLAC","LIMOGES I","LIMOGES II"]; var liste_4 = [liste_4_0,liste_4_1,liste_4_2,liste_4_3]; function fill_list_choice(next_list, valAAfficher){ //alert("Valeur à afficher : "+valAAfficher); if(valAAfficher === "-1"){ return; } switch(next_list){ case "liste_4" : var liste = liste_4[valAAfficher]; var next_list = document.getElementById(next_list); var opt, child, j=0; // On supprime les éléments qui y sont pour l'instant while(child = next_list.childNodes[0]){ next_list.removeChild(child); } // On créé la liste voulue opt = document.createElement("option"); opt.innerHTML = "Indifferent"; next_list.appendChild(opt); for(var i = 0, l = liste.length;i<l;i++){ opt = document.createElement("option"); opt.innerHTML = liste; opt.value = i; next_list.appendChild(opt); } break; default: alert("Liste inconnue"); return; } afficherAutres; } function afficherAutres() { var l2 = document.getElementById("liste2"); var l3 = document.getElementById("liste3"); var l4 = document.getElementById("liste4"); var Sb = document.getElementById("submt"); if (document.gie.liste_1.value != "-1") { if (l2.style.display == "none") l2.style.display = "block"; if (l3.style.display == "none") l3.style.display = "block"; if (l4.style.display == "none") l4.style.display = "block"; if (Sb.style.display == "none") Sb.style.display = "block"; } else { l2.style.display = "none"; l3.style.display = "none"; l4.style.display = "none"; Sb.style.display = "none"; } } </script> </head> <body> <div id="global"> <div id="liste"> <table class="tbl" style="width: 98%"> <tbody> <tr> <td class="titre">Lister les intervenants</td> </tr> <tr> <td> <form name=gie" action="" method="post"> <div id="list1"> <span class="etq">Lister les intervenants</span> <select id="liste_1" name="liste_1" onchange="fill_list_choice('liste_4', this.value);"> <option value="-1">Selectionner</option> <option value="1">Par Ecole</option> <option value="2">Par Discipline</option> <option value="3">Par Localisation</option> <option value="4">Par Circonscription</option> </select> </div> <div id="liste2" style="display:none;"> <span class="etq">Trié par</span> <select id="liste_2" name="list_2"> <option selected="selected" value="nomint">Nom</option> <option value="numagr">Numéro agr.</option> </select> </div> <div id="liste3" style="display:none;"> <span class="etq">Sigle</span> <select id="liste_3" name="liste_3"> <option selected="selected" value="EMC">EMC</option> <option value="EPC">EPC</option> <option value="ECU">ECU</option> </select></div> <div id="liste4" style="display:none;"> <span class="etq">Ecole</span> <select id="liste_4" name="liste_4"> <option>Indifferent</option> </select> </div> <div id="submt" style="display:none;"> <span class="etq"></span> <input class="bouton" name="B1" style="border: solid; float: right; background-color: #FF0000; font-size: x-small;" type="submit" value="OK" /> </div> </form> </td> </tr> </tbody> </table> </div> </div> </body> </html>



Merci.





[ Posté par #:-{)% ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 05-12-2009 à 05:09 | 2548 messages ]

Alut

t'as fait exprès de mettre ton code sur 1 seule ligne ???
c'est absolument ingérable, et pleins d'erreurs à cause de celà, les commentaires // empêchent les fonctions de... fonctionner car elles se retrouvent en... commentaire
et encore celui là çà va, le code de ton autre poste est truffé d'erreurs, il manque des ", les // n'en parlons plus, des <a href> mal imbriqué, 1 style a la place d'1 script et vice-versa
en tout cas si çà marche chez toi comme çà, chapeau, t'as 1 super navigateur (ou trop de chance)

donnes-nous 1 meilleur code, ou alors 1 url ou on peut le voir en action

Atchao

________________
Oubli du BBcode, rééditer!
barbe-sauvage ex Mozopiens devenu renard de feu... et un peu konq sur les bords

Les OG et les DR, je M pas :/

[ Posté par apz ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 05-12-2009 à 11:33 | 9 messages ]

Salut Alut,

Je na sais comment il s'est fait afficher sur suele ligne, mais sois sur sur que je l'ai pas fais expres

bon j'ai passé le code sur dreamweaver, et depuis le recopier ici.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Lister les intervenants</title>
<style type="text/css">

body {
margin: 0;
padding: 0;
}

#global {
position:absolute;
left: 50%;
top: 50%;
width: 700px;
height: 400px;
margin-top: -200px;
margin-left: -350px;
border: 1px solid #333;
background-color: #eee;
}
#liste {
width: 280px;
left: 10%;
top: 10%;
position: relative;
}
.titre{
color: #FFF;
font-family: Tahoma;
font-size: 12px;
background-color: #0000FF;
text-align: center;
}
.etq{
font-family: Tahoma;
color: #000;
font-size: 12px;
text-align: left;
width: 120px;
display: inline-block;
}
.chp {text-align: left ;}
.bouton {float: right ; background:red;}
.tbl { border: 1px solid #0000FF;width:98%}
</style>

<script type="text/javascript" language="javascript">

var liste_4_0 = ["E1","E2","E4"];
var liste_4_1 = ["théâtre","informatique","langue vivante"];
var liste_4_2 = ["Congnac la ville","Bussines","St-Junien"];
var liste_4_3 = ["BELLAC","LIMOGES I","LIMOGES II"];
var liste_4 = [liste_4_0,liste_4_1,liste_4_2,liste_4_3];

function fill_list_choice(next_list, valAAfficher){
//alert("Valeur à afficher : "+valAAfficher);
if(valAAfficher === "-1"){
return;
}
switch(next_list){
case "liste_4" :
var liste = liste_4[valAAfficher];
var next_list = document.getElementById(next_list);
var opt, child, j=0;
// On supprime les éléments qui y sont pour l'instant
while(child = next_list.childNodes[0]){
next_list.removeChild(child);
}
// On créé la liste voulue
opt = document.createElement("option");
opt.innerHTML = "Indifferent";
next_list.appendChild(opt);
for(var i = 0, l = liste.length;i<l;i++){
opt = document.createElement("option");
opt.innerHTML = liste[i];
opt.value = i;
next_list.appendChild(opt);
}
break;


default:
alert("Liste inconnue");
return;
}
afficherAutres;
}
function afficherAutres() {
var l2 = document.getElementById("liste2");
var l3 = document.getElementById("liste3");
var l4 = document.getElementById("liste4");
var Sb = document.getElementById("submt");

if (document.gie.liste_1.value != "-1")
{
if (l2.style.display == "none")
l2.style.display = "block";

if (l3.style.display == "none")
l3.style.display = "block";

if (l4.style.display == "none")
l4.style.display = "block";

if (Sb.style.display == "none")
Sb.style.display = "block";
}
else
{
l2.style.display = "none";
l3.style.display = "none";
l4.style.display = "none";
Sb.style.display = "none";
}
}
</script>

</head>
<body>
<div id="global">
<div id="liste">
<table class="tbl" style="width: 98%">
<tbody>
<tr>
<td class="titre">Lister les intervenants</td>
</tr>
<tr>
<td>
<form name="gie" action="" method="post">
<div id="list1">
<span class="etq">Lister les intervenants</span>
<select id="liste_1" name="liste_1" onchange="fill_list_choice('liste_4', this.value);">
<option value="-1">Selectionner</option>
<option value="1">Par Ecole</option>
<option value="2">Par Discipline</option>
<option value="3">Par Localisation</option>
<option value="4">Par Circonscription</option>
</select>
</div>
<div id="liste2" style="display:none;">
<span class="etq">Trié par</span>

<select id="liste_2" name="list_2">
<option selected="selected" value="nomint">Nom</option>
<option value="numagr">Numéro agr.</option>
</select>
</div>
<div id="liste3" style="display:none;">
<span class="etq">Sigle</span>

<select id="liste_3" name="liste_3">
<option selected="selected" value="EMC">EMC</option>
<option value="EPC">EPC</option>
<option value="ECU">ECU</option>
</select></div>
<div id="liste4" style="display:none;">
<span class="etq">Ecole</span>
<select id="liste_4" name="liste_4">
<option>Indifferent</option>
</select>
</div>

<div id="submt" style="display:none;">
<span class="etq"></span>
<input class="bouton" name="B1" style="border: solid; float: right; background-color: #FF0000; font-size: x-small;" type="submit" value="OK" />
</div>
</form>
</td>
</tr>
</tbody>
</table>

</div>
</div>
</body>
</html>


[ Posté par #:-{)% ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 05-12-2009 à 15:53 | 2548 messages ]

beaucoup moins d'erreurs
en fait je n'ai trouvé que :
* ligne 89 : il y a afficherAutres; il faut afficherAutres();
mais j'ai surement pas compris la finalité du/des script/s (si les 2 sont en relations !!!)

________________
Oubli du BBcode, rééditer!
barbe-sauvage ex Mozopiens devenu renard de feu... et un peu konq sur les bords

Les OG et les DR, je M pas :/

[ Posté par apz ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 05-12-2009 à 22:36 | 9 messages ]

salut,

le but de ce code est selon le choix effectué dans la "liste_1" affichée dans la page d'acceuil, une autre liste (liste_4) est crée automatiquement selon la selection éffectuée :

choix = 0 => la 4eme liste (liste_4) est générée est remplie par les éléments de la liste :

var liste_4_0 = ["E1","E2","E4"];


choix = 1 => la 4eme liste sera remplie par :

var liste_4_1 = ["théâtre","informatique","langue vivante"];


et ainsi de suite ....

Pour les listes 2 et 3 (liste_2 et liste_3), le code javascript dans mon cas, ne sert que pour les afficher/masquer.

Ca veut dire que le OnChange de la liste_1 qui commande le remplissage de la liste_4 selon le choix éffectué ensuite l'affichage/masquage des listes 2,3 et 4 dans le formulaire de page.

;)


[Message édité par apz le 05-12-2009 à 22:41]


[ Posté par apz ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 07-12-2009 à 15:05 | 9 messages ]

voila un autre code plus leger et il ne manque que quelques corrections pour qu'il fonctionne :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Lister les intervenants</title>
<style type="text/css">

body {
margin: 0;
padding: 0;
}

#global {
position:absolute;
left: 50%;
top: 50%;
width: 700px;
height: 400px;
margin-top: -200px;
margin-left: -350px;
border: 1px solid #333;
background-color: #eee;
}
#liste {
width: 280px;
left: 10%;
top: 10%;
position: relative;
}
.titre{
color: #FFF;
font-family: Tahoma;
font-size: 12px;
background-color: #0000FF;
text-align: center;
}
.etq{
font-family: Tahoma;
color: #000;
font-size: 12px;
text-align: left;
width: 120px;
display: inline-block;
}
.chp {text-align: left ;}
.bouton {float: right ; background:red;}
.tbl { border: 1px solid #0000FF;width:280px;}
</style>
</head>
<body>
<form name="gie" id="gie" action="" method="post">
<table class="tbl">
<tbody>
<tr>
<td class="titre">Lister les intervenants</td>
</tr>
<tr>
<td><p id="l1"><span class="etq">Lister les intervenants</span>
<select id="sel1" name="sel1">
<option value="-1" selected="selected">Selectionner</option>
<option value="1">Par Ecole</option>
<option value="2">Par Discipline</option>
<option value="3">Par Localisation</option>
<option value="4">Par Circonscription</option>
</select>
</p>
<p id="l2" style="display:none;"><span class="etq">Trié par</span>
<select id="sel2" name="sel2">
<option selected="selected" value="nomint">Nom</option>
<option value="numagr">Numéro agr.</option>
</select>
</p>
<p id="l3" style="display:none;"><span class="etq">Sigle</span>
<select id="sel3" name="sel3">
<option selected="selected" value="EMC">EMC</option>
<option value="EPC">EPC</option>
<option value="ECU">ECU</option>
</select>
</p>
<p id="l4" style="display:none;"><span class="etq">Ecole</span>
<select id="sel4" name="sel4">
<option>Indifferent</option>
</select>
</p>
<p id="ok" style="display:none"><span class="etq"></span>
<input class="bouton" name="B1" id="B1" style="border: solid; float: right; background-color: #FF0000; font-size: x-small; display:block" type="submit" value="ok" />
</p></td>
</tr>
</tbody>
</table>
</form>
<script type="text/javascript"><!--
var liste=new Array (
new Array ( "Ecole1","Ecole2","Ecole3","Ecole4" ) ,
new Array ( "théâtre","informatique","langue vivante" ) ,
new Array ( "ville1","ville2","ville3" ),
new Array ( "zone1","zone2","zone3" )
);
var s1=document.getElementById("sel1");
var s4=document.getElementById("sel4");
s1.onchange=function()
{

if (s1.options[s1.selectedIndex].text === "Selectionner")

{
l2.style.display = "none";
l3.style.display = "none";
l4.style.display = "none";
ok.style.display = "none";

}
else
{
s4.length=0;
s4.length=liste[s1.selectedIndex-1].length;
for ( var n=0; n < liste[s1.selectedIndex-1].length; n++ )
{ s4.options[n].text=liste[s1.selectedIndex-1][n]; }

l2.style.display = "inline";
l3.style.display = "inline";
l4.style.display = "inline";
ok.style.display = "inline";
}
}
-->
</script>
</body>
</html>





[ Posté par apz ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 07-12-2009 à 19:01 | 9 messages ]

bon je me suis rendu compte qu'il falait définir le reste des variables utilisées dans le code javascript.

var l2=document.getElementById("l2");
var l3=document.getElementById("l3");
var l4=document.getElementById("l4");
var ok=document.getElementById("ok");


le tableau, j'aimerais bien le remplacer pour avoir un titre coloré (liste des intervenants) avec un cadre bleu autour du formulaire.

mais un probleme :

pourquoi la liste s4.lenght est undefined :

s4.length=liste[s1.selectedIndex-1].length;


pourtant elle est bien remplie par :


liste[0] => s1.selectedIndex =1, liste[0].lenght = 4
liste[1] => s1.selectedIndex =2, liste[1].lenght = 4
liste[2] => s1.selectedIndex =3, liste[2].lenght = 3
liste[3] => s1.selectedIndex =4, liste[3].lenght = 3


Merci.

[Message édité par apz le 07-12-2009 à 19:02]


[ Posté par apz ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 07-12-2009 à 23:26 | 9 messages ]

il y'avait quelques fautes de frappe, mais ça ne fonctionne toujours pas. Bizzare !

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Lister les intervenants</title>
<style type="text/css">

body {
margin: 0;
padding: 0;
}

#global {
position:absolute;
left: 50%;
top: 50%;
width: 700px;
height: 400px;
margin-top: -200px;
margin-left: -350px;
border: 1px solid #333;
background-color: #eee;
}
#liste {
width: 280px;
left: 10%;
top: 10%;
position: relative;
}
.titre{
color: #FFF;
font-family: Tahoma;
font-size: 12px;
background-color: #0000FF;
text-align: center;
}
.etq{
padding-left : 5px;
font-family: Tahoma;
color: #000;
font-size: 12px;
text-align: left;
width: 120px;
display: inline-block;
}
.chp {text-align: left ;}
.bouton {float: right ; background:red;}
.tbl { border: 1px solid #0000FF;width:280px;}
</style>
</head>
<body>
<form name="gie" id="gie" action="" method="post">
<table class="tbl">
<tbody>
<tr>
<td class="titre">Lister les intervenants</td>
</tr>
<tr>
<td><div id="l1">
<span class="etq">Lister les intervenants</span>
<select id="sel1" name="sel1">
<option selected="selected">Selectionner</option>
<option value="1">Par Ecole</option>
<option value="2">Par Discipline</option>
<option value="3">Par Localisation</option>
<option value="4">Par Circonscription</option>
</select>
</div>
<div id="l2" style="display:none;">
<span class="etq">Trié par</span>
<select id="sel2" name="sel2">
<option selected="selected" value="nomint">Nom</option>
<option value="numagr">Numéro agr.</option>
</select>
</div>
<div id="l3" style="display:none;">
<span class="etq">Sigle</span>
<select id="sel3" name="sel3">
<option selected="selected" value="EMC">EMC</option>
<option value="EPC">EPC</option>
<option value="ECU">ECU</option>
</select>
</div>
<div id="l4" style="display:none;">
<span class="etq">Ecole</span>
<select id="sel4" name="sel4">
<option>&nbsp;</option>
</select>
</div>
<div id="ok" style="display:none;">
<span class="etq">&nbsp;</span>
<input class="bouton" name="B1" id="B1" style="border: solid; float: right; background-color: #FF0000; font-size: x-small; display:block" type="submit" value="ok" />
</div></td>
</tr>
</tbody>
</table>
</form>
<script type="text/javascript"><!--
var liste=new Array (
new Array ( "Ecole1","Ecole2","Ecole3","Ecole4" ) ,
new Array ( "théâtre","informatique","langue vivante" ) ,
new Array ( "ville1","ville2","ville3" ),
new Array ( "zone1","zone2","zone3" )
);
var s1=document.getElementById("sel1");
var s4=document.getElementById("sel4");
var l2=document.getElementById("l2");
var l3=document.getElementById("l3");
var l4=document.getElementById("l4");
var ok=document.getElementById("ok");

s1.onchange=function()
{

if (s1.options[s1.selectedIndex].text === "Selectionner")
{
l2.style.display = "none";
l3.style.display = "none";
l4.style.display = "none";
ok.style.display = "none";
}
else
{
s4.length=0;
s4.length=liste[s1.selectedIndex-1].length;
s4.options[0].text="Indifferent";
for ( var n=1; n <= liste[s1.selectedIndex-1].length); n++ )
{
s4.options[n].text=liste[s1.selectedIndex-1][n-1];
}

l2.style.display = "inline";
l3.style.display = "inline";
l4.style.display = "inline";
ok.style.display = "inline";

}
}
-->
</script>
</body>
</html>


[ Posté par #:-{)% ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 08-12-2009 à 15:31 | 2548 messages ]

ta 1° version fonctionnait bien en rajoutant le () à afficherAutres ==> afficherAutres();
c'est pas s4.lenght qui est undefined, mais s4.options[n], car tu n'as que la 1° option (c-à-d l'options[0]) les 1 à 4 n'existent pas encore
pour les avoir tous, il faut recréer le select, comme ce que tu as dans ta 1° version (case "liste_4" : ), avec des createElement et des appendChild

mais pourquoi, vouloir remettre les résultats de tes 'select' dans 1 'select', tu pourrais les mettre simplement dans 1 div ou dans 1 textarea (resultat += element_selected)

[Message édité par #:-{)% le 08-12-2009 à 15:34]


________________
Oubli du BBcode, rééditer!
barbe-sauvage ex Mozopiens devenu renard de feu... et un peu konq sur les bords

Les OG et les DR, je M pas :/




Services email :

Vous devez vous identifier pour profiter des services par email du forum.
Le forum ] [ Préférences ] [ Nouveau sujet ] [ Répondre ] [ Recherche ] [ Vos sujets ] [ Tous lus ] [ Flux RSS ]






compteur gratuit
actuellement en ligne

    PUBLICITE



     ANNUAIRE WEBMAST.
Néo Domaine
Enregistrement, Tansfert et Gestion de nom de domaine Internet Parking DNS + redirection web + redirection mail INCLUS ! Transfert de Registrar GRATUIT !
http://www.neodomaine.com/
Cat : Nom de domaine
Voir l'annuaire webmaster


     LES SCRIPTS :
78 à éditer
68 à copier/coller
247 des membres
2580 sur le web
>> Tous les scripts

     LES MEMBRES :
65977 membres
4651 comptes CountUs
1842 comptes myCircle

     LES FORUMS :
14 forums
40361 topics
191690 messages
>> Les forums

    SONDAGE

Vous avez un blog ou site classique ?
Un blog
Un site classique
Les deux !
La mini-astuce "Referencement" du jour par krucial
Pour savoir combien de pages de votre site sont indexées dans Google, il vous suffit de taper, dans la boite de recherche du moteur : "site:http://www.votresite.com";.
Proposer votre mini-astuce | Archives des mini-astuces
© 1999-2012 EJS - Tous droits réservés | CNIL N° 844440 | 12/02/2012 22:23:05 | Design by | Gen. en 0.632 sec.