Probleme javascript
RésoluDefouille Messages postés 404 Statut Membre -
je veux mon checkbox Tout cocher coche tous les autres checkbox sauf les deux premier
voici mon code; le pb est que le checkbox tout cocher coche rien du tout et je ne comprends pas prkoi ???
Merci pour votre aide
<script langage="javascript">
function selectAll()
{
for(i=0;i<document.listeObjetForm.length;i++)
{
if(document.listeObjetForm.elements[i].type == "checkbox" )
{
if(document.listeObjetForm.elements[i].name == "MoyT" || document.listeObjetForm.elements[i].name == "MoyS" )
{
document.listeObjetForm.elements[i].checked = false;
}
else
{
document.listeObjetForm.elements[i].checked = true;
}
}
}
}
</script>
<?php
echo "
<form class='centrer' name='listeObjetForm'>
<input name='MoyT' type='checkbox' value='MoyT' /> Moy T
<input name='MoyS' type='checkbox' value='MoyS' /> Moy S
<input type='checkbox' name='tout' onClick='selectAll()'/> Tout cocher
<input type='checkbox' name='12'/>
<input type='checkbox' name='13'/>
<input type='checkbox' .name='18'/>
<input type='checkbox' name='22'/>
<input type='checkbox' name='24'/>
</form> ";
?>
1 réponse
Problème rencontré : le bouton Tout cocher doit cocher toutes les cases d'un formulaire, mais le script JavaScript ne coche pas correctement les premières cases et produit un comportement inattendu. Plusieurs pistes ont été testées, notamment l'usage de getElementById et la gestion des noms MoyT/MoyS, mais les échanges indiquent surtout une duplication de balises form. Finalement, la solution retenue est venue de la correction côté PHP : éviter deux balises form imbriquées ou en double, afin que la fonction sélectionAll cible le bon formulaire. D'autres échanges évoquent aussi des ajustements pour limiter le balayage à un formulaire spécifique et éviter de cocher les cases externes à la page.
-
Bonjour,
Je ne connais pas "listeObjetForm" et apparement firebug n'aime pas non plus :p
je te propose une alternative getElementsByTagName :
function selectAll() { var inputs = document.getElementsByTagName('input') ; for(i=0;i<inputs.length;i++) { if(inputs[i].type == "checkbox" ) { if(inputs[i].name == "MoyT" || inputs[i].name == "MoyS" ) inputs[i].checked = false; else inputs[i].checked = true; } } }
-
-
-
-
-
Avec ce code cela marche très bien...
<script langage="javascript"> function selectAll() { var inputs = document.getElementById('listeObjetForm').getElementsByTagName('input') ; for(i=0;i<inputs.length;i++) { if(inputs[i].type == "checkbox" ) { if(inputs[i].name == "MoyT" || inputs[i].name == "MoyS" ) inputs[i].checked = false; else inputs[i].checked = true; } } } </script> <form class="centrer" id="listeObjetForm" name="listeObjetForm"> <input name="MoyT" type="checkbox" value="MoyT" /> Moy T <input name="MoyS" type="checkbox" value="MoyS" /> Moy S <input type="checkbox" name="tout" onClick="selectAll()"/> Tout cocher <input type="checkbox" name="12"/> <input type="checkbox" name="13"/> <input type="checkbox" .name="18"/> <input type="checkbox" name="22"/> <input type="checkbox" name="24"/> </form> <form class="centrer" id="listeObjetForm2" name="listeObjetForm2"> <input name="MoyT" type="checkbox" value="MoyT" /> Moy T <input name="MoyS" type="checkbox" value="MoyS" /> Moy S <input type="checkbox" name="tout" onClick="selectAll()"/> Tout cocher <input type="checkbox" name="12"/> <input type="checkbox" name="13"/> <input type="checkbox" .name="18"/> <input type="checkbox" name="22"/> <input type="checkbox" name="24"/> </form>
As tu fais attention au guillemets simples et doubles ?
-