checkbox générale

Eléphant du PHP | 441 Messages

20 avr. 2006, 12:31

Peut-être préfixer les ids des éléments fils par l'id de l'élément père...
Si tu cliques sur un élément père avec l'id pere1, tu passes l'id en param de ta fonction JS.
Ensuite tu parcours les éléments de ton formulaire.
Pour ceux dont l'id commence par l'id passé en paramètre, tu lui donnes la même valeur pour la propriété checked.
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes

VaN
Mammouth du PHP | 1107 Messages

24 avr. 2006, 11:37

Je n'arrive toujours pas à réaliser ce que je souhaite : /

Voici mon menu, une fois généré : j'ai suivi les conseils, à savoir donner une id à chaque rubrique (cat1, cat2, etc), et une id reprenant l'id mère à chaque sous rubrique fille (cat1c1, cat1c2, cat2c1, etc).

Code : Tout sélectionner

<ul class="menu"> <li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="cat1" type="checkbox" onclick="ta()" name="cat_destinataire" value="1">E-sports <ul> <li><input id="cat1c1" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/fr.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">http://www.esportsfrance.com<a href="fiche.php?id=1"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> <li><input id="cat1c2" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/be.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">www.test.com<a href="fiche.php?id=8"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> </ul> </li> <li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="cat2" type="checkbox" onclick="ta()" name="cat_destinataire" value="2">Counter-Strike <ul> <li><input id="cat2c1" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/fr.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">http://www.goodgame.fr<a href="fiche.php?id=4"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> <li><input id="cat2c2" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/nl.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">http://www.counter-strike.net<a href="fiche.php?id=3"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> <li><input id="cat2c3" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/nl.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">http://www.team-aaa.com<a href="fiche.php?id=5"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> </ul> </li> <li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="cat3" type="checkbox" onclick="ta()" name="cat_destinataire" value="3">WarCraft III <ul> <li><input id="cat3c1" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/world.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">www.w3replays.com<a href="fiche.php?id=6"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> </ul> </li> <li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="cat4" type="checkbox" onclick="ta()" name="cat_destinataire" value="4">PES 5 <ul> <li><input id="cat4c1" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/eu.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">http://www.pes-online.com<a href="fiche.php?id=7"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> </ul> </li> <li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="cat5" type="checkbox" onclick="ta()" name="cat_destinataire" value="8">Test </li> </ul>
et voici le code JS, qui devrait me permettre de check toutes les sous-rubriques filles lorsque je clique sur une rubrique mère :

Code : Tout sélectionner

function ta() { for (i=0; i<menu.length; i++) { mesbox = menu.elements[i]; mesbox.checked = menu.contact.checked; } }
Lorsque je clique sur une checkbox mère, msg d'erreur suivant :
menu.contact.checked a a valeur Null ou n'est pas un objet.
Je suis perdu, need assistance : /

merci.

Eléphant du PHP | 441 Messages

24 avr. 2006, 12:48

Bon je vais jeter un coup d'oeil durant ma pause repas ;)
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes

Eléphant du PHP | 441 Messages

24 avr. 2006, 12:59

voilà tu avais oublié beaucoup de chose....comme placer ton code dans un formulaire par exemple, faire le test d'égalité etc...

Voilà une première version, à améliorer certainement mais qui fonctionne ;)
A toi de poursuivre "petit scarabée" :D

Code : Tout sélectionner

<html> <head> <title>Premiers pas</title> <script type="text/javascript"> function ta(id) { var liste=document.getElementById('menu').elements; for (i=0; i<liste.length; i++) { var id_fils = liste[i].id; var id_pere = id_fils.substr(0,id.length); if (id_pere == id) liste[i].checked=document.getElementById(id).checked; } } </script> </head> <body> <form id="menu"> <ul class="menu"> <li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="cat1" type="checkbox" onclick="ta('cat1')" name="cat_destinataire" value="1">E-sports <ul> <li><input id="cat1c1" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/fr.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">http://www.esportsfrance.com<a href="fiche.php?id=1"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> <li><input id="cat1c2" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/be.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">www.test.com<a href="fiche.php?id=8"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> </ul> </li> <li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="cat2" type="checkbox" onclick="ta('cat2')" name="cat_destinataire" value="2">Counter-Strike <ul> <li><input id="cat2c1" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/fr.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">http://www.goodgame.fr<a href="fiche.php?id=4"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> <li><input id="cat2c2" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/nl.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">http://www.counter-strike.net<a href="fiche.php?id=3"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> <li><input id="cat2c3" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/nl.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">http://www.team-aaa.com<a href="fiche.php?id=5"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> </ul> </li> <li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="cat3" type="checkbox" onclick="ta('cat3')" name="cat_destinataire" value="3">WarCraft III <ul> <li><input id="cat3c1" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/world.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">www.w3replays.com<a href="fiche.php?id=6"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> </ul> </li> <li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="cat4" type="checkbox" onclick="ta('cat4')" name="cat_destinataire" value="4">PES 5 <ul> <li><input id="cat4c1" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/eu.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">http://www.pes-online.com<a href="fiche.php?id=7"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> </ul> </li> <li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="cat5" type="checkbox" onclick="ta('cat5')" name="cat_destinataire" value="8">Test </li> </ul> </form> </body> </html>
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes

VaN
Mammouth du PHP | 1107 Messages

27 avr. 2006, 11:53

Bonjour,

bon j'ai un peu avancé, et j'arrive a coucher toutes les cases de ma rubrique en cochant la case mère.
Mais par contre je n'arrive pas à faire l'opération inverse, à savoir découcher toute une rubrique.

Que dois-je rajouter dans ma fonction ?

Code : Tout sélectionner

function ta(id_mere) { for(var i=1; ; ++i) { var id_fille = id_mere+"c"+i; if(!document.forms["menu"].elements[id_fille]) break; document.forms["menu"].elements[id_fille].checked = true; } }
appel à la fonction :
echo "\t<li><img src=\"images/plus.gif\" onclick=\"expand(this)\"  align=\"absmiddle\" /><input id=\"".$cat."\" type=\"checkbox\" onclick=\"ta(this.id)\" name=\"cat_destinataire\" value=\"".$result['cat_id']."\">".$result['cat_nom']."\n";

Eléphant du PHP | 441 Messages

27 avr. 2006, 12:41

Bonjour,

bon j'ai un peu avancé, et j'arrive a coucher toutes les cases de ma rubrique en cochant la case mère.
Mais par contre je n'arrive pas à faire l'opération inverse, à savoir découcher toute une rubrique.
euh la fonction que je t'ai proposé plus haut permet déjà de cocher ou décocher une ensemble d'item de même famille... :?
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes

VaN
Mammouth du PHP | 1107 Messages

27 avr. 2006, 13:52

Ah ouais tiens : ) merci bcp : )

VaN
Mammouth du PHP | 1107 Messages

03 mai 2006, 14:13

Je viens de me rendre compte que cela fonctionnait parfaitement sous IE, mais pas sous Mozilla. rien ne se passe lorsque je coche la case.

Eléphant du PHP | 441 Messages

03 mai 2006, 20:24

Je viens de me rendre compte que cela fonctionnait parfaitement sous IE, mais pas sous Mozilla. rien ne se passe lorsque je coche la case.
C'est marrant car moi ca marche aussi sous FF... tu as modifié quelques chose?
un bon bout de code serait le bienvenue ;)
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes