Partage
  • Partager sur Facebook
  • Partager sur Twitter

eviter envoi de formulaire en php sur fonction javascript

Sujet résolu
    7 juin 2009 à 22:12:17

    bonjour,
    j'ai écrit un test en formulaire html, qui doit être envoyé vers une autre page qui affiche les résultats, mais j'ai inclus une fonction javascript qui permet de vérifier qu'il y a bien une réponse par question. Voici le code :
    function choix(form) 
    {
    selection=0;
    for (i=0;i<form.pterodactyle.length;i++)
        {
    	if (form.pterodactyle[i].checked)
    		{
    			selection=1;
    		}
    }
    				
    	if (selection==0)
    	{
    		alert ("Vous devez répondre à toutes les questions pour obtenir votre score !");
    		return false();
    	}
    				
    			}
    

    puis le morceau de formulaire :
    <form method="post" action="test3result.php" name="form">
    <input type="submit" value="envoi" onClick="choix(form)">
    

    Ce code affiche parfaitement l'alert quand une question est restée sans réponse mais persiste, malgré le return false() à me charger la page test3result.php alors qu'il faudrait qu'elle reste la même.
    Si quelqu'un sait ce que je dois changer...
    merci du temps que vous prendrez pour répondre à ma question
    • Partager sur Facebook
    • Partager sur Twitter
      7 juin 2009 à 22:34:38

      Plutôt que de mettre un onclick sur le bouton submit, il est conseillé de mettre un onsubmit sur la balise <form>.

      Et dans ta fonction, il faudrait qu'elle retourne soit true soit false (mais pas seulement false...)
      Et donc tu marqueras :

      <form onsubmit="return choix(form);" ...>
      
      • Partager sur Facebook
      • Partager sur Twitter
        7 juin 2009 à 22:47:36

        merci d'avoir répondu aussi vite Golmote.
        Toutefois, le résultat reste le même après modification du code.
        peut-être une autre suggestion ?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          7 juin 2009 à 22:56:44

          Fatigué le golmote :)

          function choix(form) {
              var valide = true;
              
              for (var i=0,l=form.pterodactyle.length;i<l;i++) {
          	if (!form.pterodactyle[i].checked) {
                      valide = false;
                  }
              }			
              if (!valide) {
                  alert ("Vous devez répondre à toutes les questions pour obtenir votre score !");
              }				
              return valide;
          }
          


          <form method="post" action="test3result.php" onsubmit="return choix(this)" id="form">
          

          • Partager sur Facebook
          • Partager sur Twitter
            7 juin 2009 à 23:14:38

            ce code n'affiche pas l'alert() et n'empêche pas la page de se charger.
            merci d'avoir pris du temps pour me répondre Golmote
            • Partager sur Facebook
            • Partager sur Twitter
              7 juin 2009 à 23:26:11

              A vrai dire, je n'ai même pas regardé la fonction choix ^^

              Par contre eddflo, le code de nod_ fonctionne à merveille...

              Montre tout ton code actuel (HTML et JS) histoire de vérifier.
              • Partager sur Facebook
              • Partager sur Twitter
                7 juin 2009 à 23:51:07

                effectivement, il fonctionne si une question n'a pas de réponse (alert() et page inchangée) cependant il a le même comportement lorsque toutes les questions ont une réponse de cochée
                voici le code, il est long, désolé :
                <form method="post" action="test3result.php" onsubmit="return choix(this)" id="form">
                <h2>Les animaux au cinéma</h2><br><br>
                	Dans quel film Eddie Murphy cotoie-t-il plus d'une dizaine de races d'animaux ? <br/><br/>
                	1 / Mon ami Joe<input type="radio" name="dolittle" id="dolittle" value="1"/>&nbsp;&nbsp;
                	2 / Dr Dolittle<input type="radio" name="dolittle" id="dolittle" value="2"/>&nbsp;&nbsp;
                	3 / Le flic de Beverly Hills<input type="radio" name="dolittle" id="dolittle" value="3"/>&nbsp;&nbsp;<br/><br/>
                	
                	Clarence est le nom de quel animal louchant ? <br/><br/>
                	1 / Singe<input type="radio" name="lion" id="lion" value="1"/>&nbsp;&nbsp;
                	2 / Elephant<input type="radio" name="lion" id="lion" value="2"/>&nbsp;&nbsp;
                	3 / Lion<input type="radio" name="lion" id="lion" value="3"/>&nbsp;&nbsp;<br/><br/>
                		
                	Qu'est Willy dans Sauvez Willy ? <br/><br/>
                	1 / Baleine<input type="radio" name="orque" id="orque" value="1"/>&nbsp;&nbsp;
                	2 / Dauphin<input type="radio" name="orque" id="orque" value="2"/>&nbsp;&nbsp;
                	3 / Orque<input type="radio" name="orque" id="orque" value="3"/>&nbsp;&nbsp;<br/><br/>
                		
                	Quel est le nom du cheval de Zorro ? <br/><br/>
                	1 / Belle<input type="radio" name="tornado" id="tornado" value="1"/>&nbsp;&nbsp;
                	2 / Spirit<input type="radio" name="tornado" id="tornado" value="2"/>&nbsp;&nbsp;
                	3 / Tornado<input type="radio" name="tornado" id="tornado" value="3"/>&nbsp;&nbsp;<br/><br/>
                		
                	Comment Louis De Funes a-t-il prénommé son chien dans le film "ni vu ni connu" ? <br/><br/>
                	1 / Corniaud<input type="radio" name="foulcan" id="foulcan" value="1"/>&nbsp;&nbsp;
                	2 / Foulcan<input type="radio" name="foulcan" id="foulcan" value="2"/>&nbsp;&nbsp;
                	3 / Baltazar<input type="radio" name="foulcan" id="foulcan" value="3"/>&nbsp;&nbsp;<br/><br/>
                		
                	Quel est le nom de la vache dans le film "la vache et le prisonnier" ? <br/><br/>
                	1 / Marguerite<input type="radio" name="marguerite" id="marguerite" value="1"/>&nbsp;&nbsp;
                	2 / Solène<input type="radio" name="marguerite" id="marguerite" value="2"/>&nbsp;&nbsp;
                	3 / Frida<input type="radio" name="marguerite" id="marguerite" value="3"/>&nbsp;&nbsp;<br/><br/>
                	
                	Tom Hanks partage la vedette avec un chien dans "Turner et..." ? <br/><br/>
                	1 / Frank<input type="radio" name="hooch" id="hooch" value="1"/>&nbsp;&nbsp;
                	2 / Hooch<input type="radio" name="hooch" id="hooch" value="2"/>&nbsp;&nbsp;
                	3 / Bob<input type="radio" name="hooch" id="hooch" value="3"/>&nbsp;&nbsp;<br/><br/>
                	
                	Quels animaux marins menacent les protagonistes dans "Open Water" ? <br/><br/>
                	1 / Crocodiles<input type="radio" name="requins" id="requins" value="1"/>&nbsp;&nbsp;
                	2 / Alligators<input type="radio" name="requins" id="requins" value="2"/>&nbsp;&nbsp;
                	3 / Requins<input type="radio" name="requins" id="requins" value="3"/>&nbsp;&nbsp;<br/><br/>
                	
                	"Solitaire", titre d'un film et caractéristique principale de quel animal ? <br/><br/>
                	1 / Ours<input type="radio" name="crocodile" id="crocodile" value="1"/>&nbsp;&nbsp;
                	2 / Fénec<input type="radio" name="crocodile" id="crocodile" value="2"/>&nbsp;&nbsp;
                	3 / Crocodile<input type="radio" name="crocodile" id="crocodile" value="3"/>&nbsp;&nbsp;<br/><br/>
                	
                	Quel est le nom du Saint-Bernard, également titre du film où il apparait ? <br/><br/>
                	1 / Beethoven<input type="radio" name="beethoven" id="beethoven" value="1"/>&nbsp;&nbsp;
                	2 / Bach<input type="radio" name="beethoven" id="beethoven" value="2"/>&nbsp;&nbsp;
                	3 / Mozart<input type="radio" name="beethoven" id="beethoven" value="3"/>&nbsp;&nbsp;<br/><br/>
                	
                	Quel est le nom du chien de la famille Simpson ? <br/><br/>
                	1 / Max<input type="radio" name="petitpapanoel" id="petitpapanoel" value="1"/>&nbsp;&nbsp;
                	2 / PetitPapaNoël<input type="radio" name="petitpapanoel" id="petitpapanoel" value="2"/>&nbsp;&nbsp;
                	3 / Bart<input type="radio" name="petitpapanoel" id="petitpapanoel" value="3"/>&nbsp;&nbsp;<br/><br/>
                	
                	Quel animal Will Smith doit-il tuer,malgré lui, dans "je suis une légende" ? ? <br/><br/>
                	1 / Loup<input type="radio" name="chien" id="chien" value="1"/>&nbsp;&nbsp;
                	2 / Chat<input type="radio" name="chien" id="chien" value="2"/>&nbsp;&nbsp;
                	3 / Chien<input type="radio" name="chien" id="chien" value="3"/>&nbsp;&nbsp;<br/><br/>
                	
                	Une souris du nom de mister jingle apparait dans quel film ? <br/><br/>
                	1 / La ligne verte<input type="radio" name="ligneverte" id="ligneverte" value="1"/>&nbsp;&nbsp;
                	2 / Commando<input type="radio" name="ligneverte" id="ligneverte" value="2"/>&nbsp;&nbsp;
                	3 / Un indien dans le placard<input type="radio" name="ligneverte" id="ligneverte" value="3"/>&nbsp;&nbsp;<br/><br/>
                	
                	Quel animal utilise Louis de Funes dans la folie des grandeurs pour pénétrer dans la chambre de la reine ? <br/><br/>
                	1 / Loutre<input type="radio" name="perroquet" id="perroquet" value="1"/>&nbsp;&nbsp;
                	2 / Furet<input type="radio" name="perroquet" id="perroquet" value="2"/>&nbsp;&nbsp;
                	3 / Perroquet<input type="radio" name="perroquet" id="perroquet" value="3"/>&nbsp;&nbsp;<br/><br/>
                	
                	Citez le nom du colley le plus connu au monde ? <br/><br/>
                	1 / Rintintin<input type="radio" name="lassie" id="lassie" value="1"/>&nbsp;&nbsp;
                	2 / Lassie<input type="radio" name="lassie" id="lassie" value="2"/>&nbsp;&nbsp;
                	3 / Cheetah<input type="radio" name="lassie" id="lassie" value="3"/>&nbsp;&nbsp;<br/><br/>
                	
                	Quel animal redoute la momie dans le film du même nom ? <br/><br/>
                	1 / Singe<input type="radio" name="chat" id="chat" value="1"/>&nbsp;&nbsp;
                	2 / Chat<input type="radio" name="chat" id="chat" value="2"/>&nbsp;&nbsp;
                	3 / Panthère<input type="radio" name="chat" id="chat" value="3"/>&nbsp;&nbsp;<br/><br/>
                	
                	Dans le film "Joe's apartment", l'appartement de Joe est envahi par quels animaux ? ? <br/><br/>
                	1 / Poules<input type="radio" name="cafard" id="cafard" value="1"/>&nbsp;&nbsp;
                	2 / Chèvres<input type="radio" name="cafard" id="cafard" value="2"/>&nbsp;&nbsp;
                	3 / Cafards<input type="radio" name="cafard" id="cafard" value="3"/>&nbsp;&nbsp;<br/><br/>
                	
                	Quelle race de chien a été employée à la fois dans un film et dans un dessin animé ? <br/><br/>
                	1 / Dogue de Bordeaux<input type="radio" name="dalmatien" id="dalmatien" value="1"/>&nbsp;&nbsp;
                	2 / Dalmatien<input type="radio" name="dalmatien" id="dalmatien" value="2"/>&nbsp;&nbsp;
                	3 / Caniche<input type="radio" name="dalmatien" id="dalmatien" value="3"/>&nbsp;&nbsp;<br/><br/>
                	
                	Quel animal monstrueux, les protagonistes du "Retour du roi" de la trilogie du seigneur des anneaux, affrontent-ils ? <br/><br/>
                	1 / Une mygale géante<input type="radio" name="mygale" id="mygale" value="1"/>&nbsp;&nbsp;
                	2 / Un dragon<input type="radio" name="mygale" id="mygale" value="2"/>&nbsp;&nbsp;
                	3 / Une hydre<input type="radio" name="mygale" id="mygale" value="3"/>&nbsp;&nbsp;<br/><br/>
                	
                	Quelle nouvelle sorte de dinosaures apparaît dans le troisième volet de la trilogie "Jurassik Park" ? <br/><br/>
                	1 / Tyrannosaurus Rex<input type="radio" name="pterodactyle" id="pterodactyle" value="1"/>&nbsp;&nbsp;
                	2 / Tricératops<input type="radio" name="pterodactyle" id="pterodactyle" value="2"/>&nbsp;&nbsp;
                	3 / Ptérodactyles<input type="radio" name="pterodactyle" id="pterodactyle" value="3"/>&nbsp;&nbsp;<br/><br/>
                	<br/><br/>
                	<input type="hidden" name="points"/>
                	<input type="submit" value="envoi">
                </form>
                <script type="text/javascript">
                	function choix(form) 
                	{
                		var valide = true;
                        for (var i=0,l=form.dolittle.length;i<l;i++) 
                		{
                			if (!form.dolittle[i].checked) 
                			{
                				valide = false;
                			}
                		}			
                			var valide = true;
                        for (var i=0,l=form.lion.length;i<l;i++) 
                		{
                			if (!form.lion[i].checked) 
                			{
                				valide = false;
                			}
                		}			
                			var valide = true;
                        for (var i=0,l=form.orque.length;i<l;i++) 
                		{
                			if (!form.orque[i].checked) 
                			{
                				valide = false;
                			}
                		}			
                			var valide = true;
                        for (var i=0,l=form.tornado.length;i<l;i++) 
                		{
                			if (!form.tornado[i].checked) 
                			{
                				valide = false;
                			}
                		}			
                			var valide = true;
                        for (var i=0,l=form.foulcan.length;i<l;i++) 
                		{
                			if (!form.foulcan[i].checked) 
                			{
                				valide = false;
                			}
                		}			
                			var valide = true;
                        for (var i=0,l=form.marguerite.length;i<l;i++) 
                		{
                			if (!form.marguerite[i].checked) 
                			{
                				valide = false;
                			}
                		}			
                			var valide = true;
                        for (var i=0,l=form.hooch.length;i<l;i++) 
                		{
                			if (!form.hooch[i].checked) 
                			{
                				valide = false;
                			}
                		}			
                			var valide = true;
                        for (var i=0,l=form.requins.length;i<l;i++) 
                		{
                			if (!form.requins[i].checked) 
                			{
                				valide = false;
                			}
                		}			
                			var valide = true;
                        for (var i=0,l=form.crocodile.length;i<l;i++) 
                		{
                			if (!form.crocodile[i].checked) 
                			{
                				valide = false;
                			}
                		}			
                			var valide = true;
                        for (var i=0,l=form.beethoven.length;i<l;i++) 
                		{
                			if (!form.beethoven[i].checked) 
                			{
                				valide = false;
                			}
                		}			
                			var valide = true;
                        for (var i=0,l=form.petitpapanoel.length;i<l;i++) 
                		{
                			if (!form.petitpapanoel[i].checked) 
                			{
                				valide = false;
                			}
                		}			
                			var valide = true;
                        for (var i=0,l=form.chien.length;i<l;i++) 
                		{
                			if (!form.chien[i].checked) 
                			{
                				valide = false;
                			}
                		}			
                			var valide = true;
                        for (var i=0,l=form.ligneverte.length;i<l;i++) 
                		{
                			if (!form.ligneverte[i].checked) 
                			{
                				valide = false;
                			}
                		}			
                			var valide = true;
                        for (var i=0,l=form.perroquet.length;i<l;i++) 
                		{
                			if (!form.perroquet[i].checked) 
                			{
                				valide = false;
                			}
                		}			
                			var valide = true;
                        for (var i=0,l=form.lassie.length;i<l;i++) 
                		{
                			if (!form.lassie[i].checked) 
                			{
                				valide = false;
                			}
                		}			
                			var valide = true;
                        for (var i=0,l=form.chat.length;i<l;i++) 
                		{
                			if (!form.chat[i].checked) 
                			{
                				valide = false;
                			}
                		}			
                			var valide = true;
                        for (var i=0,l=form.cafard.length;i<l;i++) 
                		{
                			if (!form.cafard[i].checked) 
                			{
                				valide = false;
                			}
                		}			
                			var valide = true;
                        for (var i=0,l=form.dalmatien.length;i<l;i++) 
                		{
                			if (!form.dalmatien[i].checked) 
                			{
                				valide = false;
                			}
                		}			
                			var valide = true;
                        for (var i=0,l=form.mygale.length;i<l;i++) 
                		{
                			if (!form.mygale[i].checked) 
                			{
                				valide = false;
                			}
                		}			
                			var valide = true;
                        for (var i=0,l=form.pterodactyle.length;i<l;i++) 
                		{
                			if (!form.pterodactyle[i].checked) 
                			{
                				valide = false;
                			}
                		}			
                				
                				if (!valide) 
                			{
                				alert ("Vous devez répondre à toutes les questions pour obtenir votre score !");
                			}				
                				return valide;
                	}
                			
                
                				</script>
                
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  8 juin 2009 à 0:55:29

                  mais oui mais non. Faut le déclarer qu'une seule fois la variable "valide" totu au début. Sinon ça sert a rien.

                  Il doit y avoir d'autre problèmes, mais en l'état ça marchera jamais. Laisse qu'un seul "var valide" au tout début de ta fonction.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 juin 2009 à 1:06:32

                    j'ai appliqué ton conseil nod_ mais comme tu l'as dit, il y a certainement d'autres problèmes.
                    Je suis conscient qu'il est tard ; je te remercie de ta réponse.
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      8 juin 2009 à 1:20:58

                      :D

                      function choix (form) {
                              var groupRadio = {}, // regarde si on a une réponse pour chaque groupe
                                  el = null; // var temporaire pour raccourcir écriture
                       
                              for (var i=0, il = form.elements.length; i < il; i++) {
                                  el = form.elements[i];
                                  if (el.type === "radio") { 
                                      if (!groupRadio[el.name]) {
                                          groupRadio[el.name] = el.checked;
                                      }
                                  }
                              }
                              // il faut voir si on en au moins un qui n'est pas rempli
                              for (var name in groupRadio) {
                                  if (!groupRadio[name]) { // ce groupe de radio n'a pas de choix
                                      alert ("pas bon"); 
                                      return false;
                                  }
                              }
                              return true;
                          }
                      


                      Après tu peux ne pas renvoyer le false à partir de la boucle pour récupérer tous les champs qui n'ont pas étés validés. à toi de voir ce que tu veux d'autre ^^ .
                      • Partager sur Facebook
                      • Partager sur Twitter
                        8 juin 2009 à 1:24:23

                        merci beaucoup nod, je suis encore trop novice en javascript pour écrire ce code moi-même ; mais grâce à des gens comme toi, ce jour viendra.
                        Bonne fin de soirée. Cordialement
                        • Partager sur Facebook
                        • Partager sur Twitter
                          8 juin 2009 à 1:32:15

                          Arf... grilled de plus de 10 minutes... Alors que je venais de pondre un code...

                          Trop triste.

                          (J'avais en plus fait un mini-cours sur les opérateurs booléens... :'( )

                          (Méchant nod_ ! Méchant !)
                          • Partager sur Facebook
                          • Partager sur Twitter

                          eviter envoi de formulaire en php sur fonction javascript

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown