Verifier si au moins un checkbox est coché [Résolu]

Messages postés
25
Date d'inscription
jeudi 29 août 2013
Dernière intervention
14 novembre 2016
- - Dernière réponse : crixuss
Messages postés
25
Date d'inscription
jeudi 29 août 2013
Dernière intervention
14 novembre 2016
- 29 août 2013 à 16:49
Bonjour,

Je fait un formulaire dans lequel un utilisateur doit faire un choix entre plusieurs événements, et j'aimerais que quand aucune case n'est choisie qu'un message d'erreur s'affiche tant qu'il n'en a pas sélectionné une. J'ai essayer de le faire en javascript mais rien ne ce passe quand je fais le test.

Merci d'avance.


Voici mon code HTML:


<form method="post" action="fiche_signal.php" name="form" id="form"> 

   <input type ="checkbox" name="evenement[0]" value = "Affectation au cours de la periode" id="evenement"></input>
   <input type ="checkbox" name="evenement[1]" value = "Changement de manager"  id="evenement1"></input>
   <input type ="checkbox" name="evenement[2]" value = "Evolution de methode de travail"  id="evenement2"></input>
   <input type ="checkbox" name="evenement[3]" value = "Longue abscence"  id="evenement3"></input>
   <input type ="checkbox" name="evenement[4]" value = "Autres Evenement"  id="evenement4"></input>
   <input type ="checkbox" name="evenement[5]" value = "Aucun Evenement"    id="evenement5></input>

</form>




voici mon code javascript:

   <head>
        <title>EVENEMENT</title>
   
        <script>
   
        	function ctr()
        	{
        		var listOfInputs = document.getElementsByTagName('evenement[]');
        		var listOfInputsLength = listOfInputs.length;
        		var atLeastOneChecked = false;	
        	
        	
        	for (var i=0; i < listOfInputsLength; i++)
        	{
        		if (listOfInputs[i].ckecked)
        		{
        			atLeastOneChecked = true;
        			break;
        		}
        	}
        	
        	if(atLeastOneChecked)
        	{
        		return true;
        	}
        	else
        	{
        	alert("rien n'est coché");
        	return false;
        	}
        	}	
        </script>
        
    </head>
Afficher la suite 

Votre réponse

1 réponse

Messages postés
28
Date d'inscription
mardi 25 octobre 2005
Dernière intervention
8 octobre 2013
0
Merci
Bonjour,

Je vois déjà 2-3 erreurs :
- getElementsByTagName => Retourne un tableau (Array) d'objets HTML à partir de nom de la balise (tag en anglais). Ici evenement est le nom, et nom un tag
le listOfInputsLength aurait pu te mettre la puce à l'oreille, il est initialisé à 0.
- manque un guillemet à l'id du dernier checkbox
- problème de synthaxe :
listOfInputs[i].ckecked => listOfInputs[i].checked (on ne confond pas k et h quand même)


j'ai essayé de toucher au minimum ton script, ce qui donne :
<form method="post" action="fiche_signal.php" name="form" id="form">

   <input type ="checkbox" name="evenement[0]" value = "Affectation au cours de la periode" id="evenement0"></input>
   <input type ="checkbox" name="evenement[1]" value = "Changement de manager"  id="evenement1"></input>
   <input type ="checkbox" name="evenement[2]" value = "Evolution de methode de travail"  id="evenement2"></input>
   <input type ="checkbox" name="evenement[3]" value = "Longue abscence"  id="evenement3"></input>
   <input type ="checkbox" name="evenement[4]" value = "Autres Evenement"  id="evenement4"></input>
   <input type ="checkbox" name="evenement[5]" value = "Aucun Evenement"    id="evenement5"></input>
   
   <input type="button" onclick="ctr()" value="valider"></input>

</form>

changement d'id pour le premier checkbox
rajout du guillement manquant

<script>
   
         function ctr()
   {
    var atLeastOneChecked = false; 
    var i = 0;
    
    while (document.getElementById("evenement" + i))
    {
     if (document.getElementById("evenement" + i).checked)
     {
      atLeastOneChecked = true;
      break;
     }
     i++;
    }
    
    if(atLeastOneChecked == true)
    {
     return true;
    }
    else
    {
     alert("rien n'est coché");
     return false;
    }
         } 
        </script>


edit : manquait un bouton valider aussi ....
dans la fonction ctr(), il te suffira de rajouter un submit du form pour terminer ton formulaire
crixuss
Messages postés
25
Date d'inscription
jeudi 29 août 2013
Dernière intervention
14 novembre 2016
-
un grand merci pour ton aide, ça marche nickel!!
Commenter la réponse de nicotontige

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.