[Javascript] Vérifier qu'au moins une case est cochée -n00b inside-

Vérifier qu'au moins une case est cochée -n00b inside- [Javascript] - HTML/CSS - Programmation

Marsh Posté le 04-08-2005 à 12:47:46    

Bonjour à tous !
J'ai un petit problème avec une fonction javascript qui est censée me vérifier qu'au moins une checkbox est cochée dans un formulaire,, sachant que le nombre de checkbox est indéfini et varie de 1 à x... Je l'ai faite en cherchant à droite à gauche sur le net, et je ne sais vraiment pas ce qui peut clocher car c'est la première fois que j'utilise du javascript.
 

Code :
  1. function check_appli()
  2. {
  3. var i = 1;
  4. while(document.getElementById('appli_' + i))
  5. {
  6.  if(document.getElementById('appli_' + i).checked)
  7.   return true;
  8.  i++;
  9. }
  10. window.alert("Veuillez sélectionner au moins une application." );
  11. return false;
  12. }


 

Code :
  1. <form method="post" name="form1" onsubmit="return check_appli();" action="mainpage.php?page=9">
  2. <input type="checkbox" name="appli_id[]" id="appli_1" value="1" checked/>
  3. <input type="checkbox" name="appli_id[]" id="appli_2" value="2" checked/>
  4. <input type="checkbox" name="appli_id[]" id="appli_3" value="3" checked/>
  5. ...
  6. <input type="checkbox" name="appli_id[]" id="appli_x" value="x" checked/>
  7. <input type="submit" name="modifier" value="Modifier"/>
  8. </form>


 
Merci d'avance pour vos éclaircissements sur la question :)

Reply

Marsh Posté le 04-08-2005 à 12:47:46   

Reply

Marsh Posté le 04-08-2005 à 13:23:26    

Ton truc marche chez moi.
 
euh...tu peux un peux plus nous en dire?

Reply

Marsh Posté le 04-08-2005 à 13:32:11    

lol.. j'aivais pas lu: tu est un newbe.
 
Donc ne me dis pas que tu as oublier de mettre le JS entre les balises:
<script></script>
 
???
 
Non tu n'aurais pas osé...
tiens copie colle ceci

Code :
  1. <script>
  2. function check_appli()
  3. {
  4. var i = 1;
  5. while(document.getElementById('appli_' + i))
  6. {
  7.  if(document.getElementById('appli_' + i).checked)
  8.   return true;
  9.  i++;
  10. }
  11. window.alert("Veuillez sélectionner au moins une application." );
  12. return false;
  13. }
  14. </script>
  15. <form method="post" name="form1" onsubmit="return check_appli();" action="mainpage.php">
  16. <input type="checkbox" name="appli_id[]" id="appli_1" value="1" checked/>
  17. <input type="checkbox" name="appli_id[]" id="appli_2" value="2" checked/>
  18. <input type="checkbox" name="appli_id[]" id="appli_3" value="3" checked/>
  19. <input type="submit" name="modifier" value="Modifier"/>
  20. </form>


Message édité par xtof_83 le 04-08-2005 à 13:33:44
Reply

Marsh Posté le 04-08-2005 à 13:52:56    

ton code à l'air nickel, je ne vois que l'idée que tu aies oublié les balises <script>
 
au passage, ca se met dans le <head></head> les balises script, n'est-ce pas xtof_83

Reply

Marsh Posté le 04-08-2005 à 13:58:04    

Oui maître, gatsusat...
 
Erreur grossiére de ma part... :) :lol:

Reply

Marsh Posté le 04-08-2005 à 14:03:05    

xtof_83 a écrit :

Oui maître, gatsusat...
 
Erreur grossiére de ma part... :) :lol:


Sinon ya ça mais c'est juste pour la démo
donc c'est un peu crade pour le HTML
 

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <title></title>
  5. <script>
  6. function check_appli()
  7.     {
  8.  var monform = document.getElementById("formulaire" );
  9.     var myCB = monform.getElementsByTagName("INPUT" )
  10.  for (var i=0; i<=myCB.length-1; i++)
  11.    if (myCB[i].type.toLowerCase()=="checkbox" )
  12.           if(myCB[i].checked) return true
  13.     window.alert("Veuillez sélectionner au moins une application." );
  14.     return false;
  15. }
  16. </script>
  17. </head>
  18. <body>
  19. <form method="post" name="form1" id="formulaire" onsubmit="return check_appli();" action="mainpage.php">
  20. <input type="checkbox" name="appli_id[]" value="1" checked/>
  21. <input type="checkbox" name="appli_id[]" value="2" checked/>
  22. <input type="checkbox" name="appli_id[]" value="3" checked/>
  23. <input type="submit" name="modifier" value="Modifier"/>
  24. </form>
  25. </body>
  26. </html>

Reply

Marsh Posté le 04-08-2005 à 14:04:45    

On va dire que tu ne t'ai pas embeté.

Reply

Marsh Posté le 04-08-2005 à 14:09:00    

ca fait la meme taille et je fait un test plus
mais bon, là tu n'a pas besoin de gerer les id dans le formulaire.
 
le mieux serait de mettre tes checkbox dans un fieldset, et dans ce cas on fout un id sur le fieldset, et on peut enlever un test à mon code

Reply

Marsh Posté le 04-08-2005 à 14:40:38    

En effet, ca marche nickel ! Il va falloir que je vérifie ma page php parce que je n'ai toujours pas réussi à le faire marcher dessus...  Merci à tous en tout cas :)

Reply

Marsh Posté le 04-08-2005 à 14:43:42    

Et s'il vous plaît, on note ça :

<script type="text/javascript">


On ne met jamais de script tout seul ! Faut toujours préciser quel type, hein ;)

Reply

Marsh Posté le 04-08-2005 à 14:43:42   

Reply

Marsh Posté le 04-08-2005 à 14:52:01    

Verdict... yavait une parenthèse en trop qui trainait dans ma page :p Ca marche très bien maintenant :d


Message édité par *LighTninG* le 04-08-2005 à 14:52:39
Reply

Marsh Posté le 04-08-2005 à 15:02:01    

FlorentG a écrit :

Et s'il vous plaît, on note ça :

<script type="text/javascript">


On ne met jamais de script tout seul ! Faut toujours préciser quel type, hein ;)


 
Ah oui sa c'est vrai :jap:

Reply

Marsh Posté le 02-02-2009 à 12:44:25    

Bonjour,
 
Avec un form qui appelle : onSubmit="return verifSelection()"  
j'ai utilisé ce code JS pour vérifier mon "checkbox" de fin de formulaire et ça marche très bien seul :
 

Code :
  1. function verifSelection()
  2. {
  3. var i = 1;
  4. while(document.getElementById('appli_' + i))
  5. {
  6. if(document.getElementById('appli_' + i).checked)
  7. return true;
  8. i++;
  9. }
  10. window.alert("Veuillez accepter les conditions generales." );
  11. return false;
  12. }


 
 
J'ai aussi, dans la même fonction, une vérification des champs qui marche très bien seule :
 

Code :
  1. function verifSelection()
  2. {
  3. if (mail_form.champ1.value == "" ) {
  4. alert("Entrez votre nom" )
  5. return false
  6. } if (mail_form.champ2.value == "" ) {
  7. alert("Entrez votre prénom " )
  8. return false
  9. } if (mail_form.champ3.value == "" ) {
  10. alert("Entrez votre date de naissance" )
  11. return false
  12. } if (mail_form.champ5.value == "" ) {
  13. alert("Entrez votre adresse" )
  14. return false
  15. } if (mail_form.champ9.value == "choisissez" ) {
  16. alert("Choisissez au moins un cours" )
  17. return false
  18. } if (mail_form.champ15.value == "" ) {
  19. alert("veuillez accepter" )
  20. return false
  21.  
  22. }


 
 
Par-contre, plus rien ne réagit lorsque je fusionne les deux comme ça :
 
 

Code :
  1. function verifSelection()
  2. {
  3. var i = 1;
  4. while(document.getElementById('appli_' + i))
  5. {
  6. if(document.getElementById('appli_' + i).checked)
  7. return true;
  8. i++;
  9. }
  10. window.alert("Veuillez accepter les conditions generales." );
  11. return false;
  12. if (mail_form.champ1.value == "" ) {
  13. alert("Entrez votre nom" )
  14. return false
  15. } if (mail_form.champ2.value == "" ) {
  16. alert("Entrez votre prénom " )
  17. return false
  18. } if (mail_form.champ3.value == "" ) {
  19. alert("Entrez votre date de naissance" )
  20. return false
  21. } if (mail_form.champ5.value == "" ) {
  22. alert("Entrez votre adresse" )
  23. return false
  24. } if (mail_form.champ9.value == "choisissez" ) {
  25. alert("Choisissez au moins un cours" )
  26. return false
  27.  
  28. }


 
 
Une idée?  
 
Merci tout plein d'avance

Reply

Marsh Posté le 03-02-2009 à 20:44:07    

return false;  
 
 
en plein milieu ?? !!!
 
Return = quitte la fonction.

Reply

Marsh Posté le 04-02-2009 à 11:40:38    

Citation :

Code :
  1. function verifSelection()
  2. {
  3. var i = 1;
  4. while(document.getElementById('appli_' + i))
  5. {
  6. if(document.getElementById('appli_' + i).checked)
  7. return true;
  8. i++;
  9. }
  10. window.alert("Veuillez accepter les conditions generales." );
  11. return false;
  12. if (mail_form.champ1.value == "" ) {
  13. alert("Entrez votre nom" )
  14. return false
  15. } if (mail_form.champ2.value == "" ) {
  16. alert("Entrez votre prénom " )
  17. return false
  18. } if (mail_form.champ3.value == "" ) {
  19. alert("Entrez votre date de naissance" )
  20. return false
  21. } if (mail_form.champ5.value == "" ) {
  22. alert("Entrez votre adresse" )
  23. return false
  24. } if (mail_form.champ9.value == "choisissez" ) {
  25. alert("Choisissez au moins un cours" )
  26. return false
  27. }



 
Ce que ça fait :
 - Dans la 1ère boucle, on sort dès qu'on trouve une case cochée et donc on ne fait pas les tests sur les valeurs des champs,
 - après la 1ere boucle, on sort et donc on ne fait pas les tests sur les valeurs des champs
 
Une solution simple est de mettre le test des checkbox après les tests des valeurs

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed