Boucle sur formulaire

Boucle sur formulaire - HTML/CSS - Programmation

Marsh Posté le 16-05-2006 à 14:27:01    

Bonjour,
 
je cherche à améliorer un contrlole de formulaire sur des boutons radios qui était comme ceci:

Code :
  1. function ControlForm()
  2. {
  3. if
  4. (
  5. (document.Form.Accueil[1].checked==false) &&
  6. (document.Form.Accueil[2].checked==false)&&
  7. (document.Form.Accueil[3].checked==false)&&
  8. (document.Form.Accueil[4].checked==false)
  9. )
  10. {alert("Oh les gars, faut cocher un choix\nQue diable !" );return false;}
  11. return true;
  12. }


en

Code :
  1. function ControlForm()
  2. {
  3. var NbFiches=document.Form.Accueil.length; // Form est le nom du formulaire et Accueil le nom des boutons
  4. for (i=1;i<=NbFiches;i++)
  5. {
  6. if (document.Form.Accueil[i].checked==false)
  7.  {
  8.  alert("Oh les gars, faut cocher un choix\nQue diable !" );
  9.  }
  10. } return false
  11. }


et cela m'ouvre 4 alertes et la dernière me redirige sur la page suivante !
Quel peut etre le problème ?
Merci pour cela
 
Alain

Reply

Marsh Posté le 16-05-2006 à 14:27:01   

Reply

Marsh Posté le 16-05-2006 à 14:35:28    

C'est normal, contrairement au 1er cas, ta 2ème fonction fait un test sur chaque bouton, tu as oublier de rétablir une opréation logique.

Reply

Marsh Posté le 16-05-2006 à 14:38:51    

function ControlForm()
{
      var NbFiches=document.Form.Accueil.length; // Form est le nom du formulaire et Accueil le nom des boutons
      var coche=0;
      for (i=1;i<=NbFiches;i++)
          {
          if (document.Form.Accueil[i].checked)
              {
              coche++;
              }
          }
      if (coche==NbFiches)
      {
         alert("Ton message" );
      }
}

Reply

Marsh Posté le 16-05-2006 à 14:39:29    

et je dois m'y prendre comment ?
 
Merci

Reply

Marsh Posté le 16-05-2006 à 15:41:28    

Pas de conseils ?
 
Merci quand meme.
 
Alain

Reply

Marsh Posté le 16-05-2006 à 15:52:07    

Ce que t'a donné benjones ne te satisfait pas ?

Reply

Marsh Posté le 16-05-2006 à 16:00:03    

Non, je n'arrive pas à rétablir une fonction logique à la suite.
 
Merci de votre aide

Reply

Marsh Posté le 16-05-2006 à 16:31:48    

jmarey a écrit :

Non, je n'arrive pas à rétablir une fonction logique à la suite.
 
Merci de votre aide


 
Pourrais tu être plus clair ?

Reply

Marsh Posté le 16-05-2006 à 16:32:08    

Voila ou j'en suis

Code :
  1. function ControlForm()
  2. {
  3. var NbFiches=document.Form.Accueil.length; // Form est le nom du formulaire et Accueil le nom des boutons
  4. for (i=1;i<=NbFiches;i++)
  5.  {
  6.  if (document.Form.Accueil[i].checked==false)
  7.    {
  8.    alert("Oh les gars, faut cocher un choix\nQue diable !" );return false;
  9.    }
  10.  else (document.Form.Accueil[i].checked==true)
  11.    {
  12.    return true;
  13.    }
  14.  break;
  15.  }
  16. }


 
sans meilleur succès
 
Encore merci

Reply

Marsh Posté le 16-05-2006 à 17:02:47    

benjones a écrit :

function ControlForm()
{
      var NbFiches=document.Form.Accueil.length; // Form est le nom du formulaire et Accueil le nom des boutons
      var coche=0;
      for (i=1;i<=NbFiches;i++)
          {
          if (document.Form.Accueil[i].checked)
              {
              coche++;
              }
          }
      if (coche==NbFiches)
      {
         alert("Ton message" );
      }
}


 
t'as essayé ça ?
 
EDIT : le test final n'est pas bon

Citation :

if (coche==0)
{
  alert("Ton message" );
}


Message édité par Bidem le 16-05-2006 à 17:04:30
Reply

Marsh Posté le 16-05-2006 à 17:02:47   

Reply

Marsh Posté le 16-05-2006 à 17:04:37    

Oui, j'ai un message d'erreur javascript !

Reply

Marsh Posté le 16-05-2006 à 17:43:01    

Tjrs la meme erreur .......
 
Cela vient surement du 1er  " if  "
 
Je rends les armes et me tourner sur mon 1er script.......domage et encore merci

Reply

Marsh Posté le 16-05-2006 à 20:52:21    

Merci les gars je vous remercie du magnifique code un peu crassou que vous nous avez pondu aujourd'hui
pour vous remercier, je vous poste un peu de code propre (avec les commentaires) (un double clic sur le bloc de code vous permettra de virer les chiffres puis de faire un copier/coller dans votre editeur favori sans avoir de crasses)
 

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2.  
  3. <html>
  4. <head>
  5.     <title>Untitled</title>
  6.     <script type="text/javascript">
  7.     function checkthisfuckingshit(form) {
  8.         var Myckb = form.getElementsByTagName("input" ); //on recupere tous les input
  9.         var ckbchecked = false; //on met une variable a false, qui deviendra true des qu'une checkbox checkee est trouvee
  10.         for (var i=0; i<Myckb.length; i++) { //on fouille tout
  11.             if (Myckb[i].name.toLowerCase()=="ouaf" && Myckb[i].checked) { //Ho une checkbox portant le nom ouaf est trouvee et elle est checkee
  12.                 ckbchecked=true;  //ho paf, checked devient true
  13.                 break; //on break ca sert a rien de continuer
  14.             }
  15.         }
  16.         if (!ckbchecked) { //aucune checkbox n'a ete trouvee
  17.             alert("tu n'as rien coche imbecile" ); //donc on dit boujour
  18.             return false; //et on lui renvoi fuck, a noter le return sur le onsubmit afin de bien dire au form : "non tu fais rien"
  19.         }
  20.     }
  21.     
  22.     
  23.     </script>
  24. </head>
  25.  
  26. <body>
  27.  
  28.  
  29. <form action="fuckme.php" onsubmit="return checkthisfuckingshit(this)">
  30. <input type="checkbox" name="ouaf">
  31. <input type="checkbox" name="ouaf">
  32. <input type="checkbox" name="ouaf">
  33. <input type="checkbox" name="ouaf">
  34. <input type="checkbox" name="ouaf">
  35. <input type="checkbox" name="notouaf">
  36. <input type="submit" value="Ho Oui continue">
  37.  
  38. </form>
  39. </body>
  40. </html>


Message édité par gatsu35 le 16-05-2006 à 20:53:32
Reply

Marsh Posté le 16-05-2006 à 22:30:31    

Merci pour ce code clair et expliqué.....
 
La variable ligne 10 correspond à quoi ?

Code :
  1. for (var i=0; i<Myckb.length; i++) { //on fouille tout


 
Merci pour tout ca

Reply

Marsh Posté le 16-05-2006 à 23:01:03    

var Myckb = form.getElementsByTagName("input" );
cette ligne renvoi un array (tableau) de pointers des éléments récupérés, danns notre cas on a un array de tous les inputs contenus dans le tableau
 
il ne nous reste plus qu'à les parcourir.
sachant que utiliser : document.Form.Accueil.length
c'est moche, vieux, pourri, et plus dans la norme, il vaut mieux utiliser des fonctions du DOM

Reply

Marsh Posté le 16-05-2006 à 23:30:29    

As tu vu que dans Mozila la derniere checkbox meme cochée, l'alerte s'affichée !
 
Bonne nuit à toi

Reply

Marsh Posté le 16-05-2006 à 23:39:35    

Le fait de prendre tous les input (le submit est aussi pris en compte, et il manque surement un chiffre supérieur ds la boucle.....mais je voudrais pas trop m'avancer.
 
a+

Reply

Marsh Posté le 16-05-2006 à 23:40:51    

as tu veux que la derniere checkbox ne porte pas le meme nom que les autres afin de bien montrer que elle est indépendante :o

Reply

Marsh Posté le 17-05-2006 à 00:00:25    

Autant pour moi, la dernières boite n'a pas le meme nom......pour ca
 
Merci pour le script
 
A bientot

Reply

Sujets relatifs:

Leave a Replay

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