Probleme javascript

Résolu
atout1 Messages postés 236 Statut Membre -  
Defouille Messages postés 404 Statut Membre -
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. Defouille Messages postés 404 Statut Membre 54
     
    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. atout1 Messages postés 236 Statut Membre
       
      salut
      merci pour la réponse, je veux tester

      en fait listeObjForm c'est le nom du <form>
      0
    2. atout1 Messages postés 236 Statut Membre
       
      ç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. Defouille Messages postés 404 Statut Membre 54
       
      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. atout1 Messages postés 236 Statut Membre
       
      ca ne marche plus :S quand j'ajout getElementById('listeObjForm') et l'id a mon form
      0
    5. Defouille Messages postés 404 Statut Membre 54
       
      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