j'ai un menu fait de checkbox, chaque checkbox possède des checkbox fille. Sur ces checkbox-mères, j'ai implémenté un script qui permet de cocher toutes les checkbox filles de chaque catégorie.
Un problème apparait :
Lorsque je coche la checkbox avec l'id 1, cela me coche également les checkbox avec l'id 10, 11, 12, etc, bref toutes celles commençant par 1.
Comment corriger ça ?
le code du menu généré en php :
Code : Tout sélectionner
<ul class="menu">
<li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="1" type="checkbox" onclick="ta(this.id)" name="cat_destinataire[]" value="1" >E-sports
<ul>
<li><input id="1c1" 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>
<script type="text/javascript">is_checked(1, "1c1");</script>
<li><input id="1c2" 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.xfire.com<a href="fiche.php?id=11"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li>
<script type="text/javascript">is_checked(1, "1c2");</script>
</ul>
</li>
<li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="2" type="checkbox" onclick="ta(this.id)" name="cat_destinataire[]" value="2" >Counter-Strike
<ul>
<li><input id="2c1" 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=12"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li>
<script type="text/javascript">is_checked(2, "2c1");</script>
<li><input id="2c2" 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>
<script type="text/javascript">is_checked(2, "2c2");</script>
<li><input id="2c3" 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>
<script type="text/javascript">is_checked(2, "2c3");</script>
</ul>
</li>
<li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="3" type="checkbox" onclick="ta(this.id)" name="cat_destinataire[]" value="3" >WarCraft III
<ul>
<li><input id="3c1" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/world.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">http://www.w3replays.com<a href="fiche.php?id=6"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li>
<script type="text/javascript">is_checked(3, "3c1");</script>
</ul>
</li>
<li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="4" type="checkbox" onclick="ta(this.id)" name="cat_destinataire[]" value="4" >PES 5
<ul>
<li><input id="4c1" 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>
<script type="text/javascript">is_checked(4, "4c1");</script>
</ul>
</li>
<li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="5" type="checkbox" onclick="ta(this.id)" name="cat_destinataire[]" value="8" >Test
</li>
<li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="6" type="checkbox" onclick="ta(this.id)" name="cat_destinataire[]" value="9" >categorie 1
</li>
<li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="7" type="checkbox" onclick="ta(this.id)" name="cat_destinataire[]" value="10" >categorie 2
</li>
<li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="8" type="checkbox" onclick="ta(this.id)" name="cat_destinataire[]" value="11" >categorie 3
</li>
<li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="9" type="checkbox" onclick="ta(this.id)" name="cat_destinataire[]" value="12" >categorie 6
</li>
<li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="10" type="checkbox" onclick="ta(this.id)" name="cat_destinataire[]" value="13" >categorie 9
</li>
</ul>Code : Tout sélectionner
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;
}
}