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 :
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é

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
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 :
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.
à 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 :
