Probleme javascript

Résolu
Bonjour, tt le monde

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

Résumé de la discussion

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.

Bobot (l’IA à votre service)
  1. 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;
    		}
    	}
    }


    0
    1. salut
      merci pour la réponse, je veux tester

      en fait listeObjForm c'est le nom du <form>
      0
    2. ça marche mais le pb il coche tout les chekbox de la page et moi je veux ke pour un form spécifique
      0
    3. remplace
      var inputs = document.getElementsByTagName('input') ;

      par
      var inputs = document.getElementById('listeObjForm').getElementsByTagName('input') ;


      Et rajoute l'id listeObjForm a ton form :
      <form class="centrer" id= "listeObjForm" name="listeObjetForm"> 
      0
    4. ca ne marche plus :S quand j'ajout getElementById('listeObjForm') et l'id a mon form
      0
    5. 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 ?
      0