Page 1 sur 2

checkbox générale

Posté : 06 avr. 2006, 19:08
par VaN
Bonjour à tous,

mon problème est simple, et sa solution doit l'être aussi j'imagine.
Une image vaut mille mots, dit-on, alors là voici :

Image

Comme on le voit sur cette oeuvre d'art, on distingue deux types d'éléments, les éléments "mère", et les éléments "filles".

J'aimerais, que lorsque je coche la checkbox d'un élément mère, les checkbox filles se cochent automatiquement. Et de meme pour le decochage.

Une solution ? une piste ?

Bien le bonsoir chez vous.

Posté : 07 avr. 2006, 17:56
par VaN
vraiment pas ? : /

Posté : 07 avr. 2006, 20:50
par Cyrano
Il faudrait explorer du coté du DOM (Document Object Model) de façon à pointer vers des élément précis. Ensuite, avec un évènement onclick sur la case parente, tu pourrais déclencher une fonction qui cocherait les cases filles.

Posté : 07 avr. 2006, 21:08
par Ultiny
Voilà c'est ce que je ferais aussi.

Code : Tout sélectionner

function checkOne() { if (getElementById("counterStrike").checked == true) { getElementById("counterStrikeDotNet").checked == true; } else { getElementById("counterStrikeDotNet").checked == false; } }

Posté : 07 avr. 2006, 21:18
par Cyrano
C'est pas bon ça Ultiny : ça voudrait dire que toutes les cases filles on la même valeur d'attribut id, ce qui est non conforme et invalide. Explorer via le DOM avec getElementByTagName('input') pour cherchers les éléments enfants de l'élément parent qu'on va par contre effectivement repérer avec getElementById(), serait peut-être plus approprié :-k

Posté : 13 avr. 2006, 19:10
par Ultiny
Mais là dans mon example j'allais pas me taper toutes les cases. J'en ai juste fait une.

Posté : 13 avr. 2006, 23:45
par Cyrano
ben tu n'aurais pas besoin de rallonger le code pour faire un nombre indéterminé de case avec une boucle et un système d'identification incrémental. Tu n'imagines tout de même pas devoir retoucher ton code chaque fois que tu dois rajouter un sous-menu ?

Enfin voilà, ce sont des indices, bon dev ;)

Posté : 15 avr. 2006, 18:50
par Ultiny
Si moi je mets une instruction par case, j'aime bien m'y retrouver :p

C'est vrai que c'est pas idiot de faire une boucle, sauf que je ne saurais pas comment delimiter le nombre de tours à faire.

Par exemple si je lui mets un for, il va tourner 10 fois par exemple alors que y'aurais que 5 cases et donc generer 5 erreurs.

Posté : 15 avr. 2006, 19:03
par Cyrano
Et pourquoi ne pas songer au foreach() :?:

Posté : 15 avr. 2006, 21:50
par Ultiny
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?

Posté : 15 avr. 2006, 23:07
par Cyrano
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

Posté : 15 avr. 2006, 23:46
par Ultiny
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?

Posté : 18 avr. 2006, 12:51
par Invité
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]

Posté : 18 avr. 2006, 12:52
par VaN
C'est moi qui vient d'ecrire le post juste au dessus, oublié de me relog.

Posté : 20 avr. 2006, 11:34
par VaN
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