checkbox générale

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : checkbox générale

par starkeus » 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 ;)

par VaN » 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.

par VaN » 27 avr. 2006, 13:52

Ah ouais tiens : ) merci bcp : )

par starkeus » 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... :?

par VaN » 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";

par starkeus » 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>

par starkeus » 24 avr. 2006, 12:48

Bon je vais jeter un coup d'oeil durant ma pause repas ;)

par VaN » 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.

par starkeus » 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.

par VaN » 20 avr. 2006, 11:34

Je viens de trouver ce script, qui semble marcher, mais je n'arrive pas à l'appliquer à mon menu.

Quelqu'un pourrait m'apporter un peu d'aide s'il vous plait ?

Code : Tout sélectionner

<script type="text/javascript"> function ta() { for (i=0; i<formu.length; i++) { mesbox = formu.elements[i]; mesbox.checked = formu.tousaucuns.checked; } } </script>

Code : Tout sélectionner

<input type="checkbox" name="tousaucuns" value="tous/aucuns" onclick="ta();"> tous/aucuns<br> <input type="checkbox" name="check1" value="1"> 1<br> <input type="checkbox" name="check2" value="2"> 2<br> <input type="checkbox" name="check3" value="1"> 3<br> <input type="checkbox" name="check4" value="2"> 4<br> <input type="checkbox" name="check5" value="1"> 5<br>
Mon menu est crée dynamiquement, de la façon suivante :
<ul class="menu">
<?php
$sql = 	"SELECT * FROM categories";
$query = mysql_query($sql);

while($result = mysql_fetch_array($query))
{
	$sql2 = "SELECT * FROM contacts WHERE contact_cat_id = '".$result['cat_id']."'";
	$query2 = mysql_query($sql2);
	$rows2 = mysql_num_rows($query2);
	
	echo "<li><img src=\"images/plus.gif\" onclick=\"expand(this)\" align=\"absmiddle\" /><input type=\"checkbox\" name=\"cat_destinataire\" value=\"".$result['cat_id']."\">".$result['cat_nom'];
	if($rows2 > 0)
	{
		echo "<ul>";
		while($result2 = mysql_fetch_array($query2))
		{
		
			echo "<li><input type=\"checkbox\" name=\"contact[]\" value=\"".$result2['contact_mail']."\">".$result2['contact_url']."<a href=\"fiche.php?id=".$result2['contact_id']."\"><img src=\"images/fiche.gif\" align=\"absmiddle\" border=\"0\" style=\"margin-left:5px;\"></a></li>";
		
		}
		echo "</ul>";
	}
	echo "</li>";
}
?>
	</ul>
pour donner ça :

Image

par VaN » 18 avr. 2006, 12:52

C'est moi qui vient d'ecrire le post juste au dessus, oublié de me relog.

par Invité » 18 avr. 2006, 12:51

Je n'y comprends pas grand chose. Je n'arrive pas à trouver comment démarrer.

Code : Tout sélectionner

for(var in var_tableau) { //...etc.. }
à quoi correspondent var et var_tableau ?[/quote]

par Ultiny » 15 avr. 2006, 23:46

Je ne parlais pas pour toi, mais pour le lien automatique sur la fonction... [-X foreach dans ton post plus haut.

Mais alors ça change rien, tes obligé de spécifier quelque par le nombre de box?

Je ne peux pas faire par exemple :

<input type="checkbox" id="box[]" />
<input type="checkbox" id="box[]" />
<input type="checkbox" id="box[]" />

Puis ensuite parcourir box pour cocher les cases?

par Cyrano » 15 avr. 2006, 23:07

Autant pour moi, je pensais PHP, mais il existe une alternative assez proche en JavaScript :

Code : Tout sélectionner

for(var in var_tableau) { //...etc.. }
Un article intéresssant sur le sujet à lire ICI

par Ultiny » 15 avr. 2006, 21:50

C'est amusant, on parle de JS et j'ai la doc du foreach de PHP :P

Ce que tu propose m'interesse beaucoup Cyrano. Pourait tu me faire un exemple s'il te plait?