Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme de submit disabled

Sujet résolu
    22 février 2010 à 16:00:38

    Salut à tous !

    J'ai fait un petit script de vérification instantané de plusieurs champs.
    Ça marche parfaitement mais, j'aimerais que l'utilisateur ne puisse pas cliquer sur valider tant qu'il y a une erreur.Pour sa j'utilise ok++; avec si il y a 3 champs OK alors sa enlève le disabled du submit .
    Mais malheureusement, ça fait plusieurs heures que je cherche le problème mais rien .
    le submit reste disabled.

    voila mon submit :
    <input type="submit" name="Submit" id="submit" disabled="disabled" />
    

    Voila mon code JS :
    <script>
          $(document).ready(function(){
    $("input").focus(function(){
    var info_form=$(this).next(".info");
    info_form.empty();
    });
    $("input").blur(function(){
       var name=($(this).attr("name"));
       var value=($(this).attr("value"));
       var info_form=$(this).next(".info");
      var errors = 0;
      var ok = 0;
       if(value==undefined)
       {
         info_form.append("<span class='rouge'>Obligatoire</span>");
        
       }
       else if(name=="societe")
       {
       	$.ajax({
            type: "GET",
            url: "verifcication_instantane_clients.php?nom_entreprise="+value,
            success:function(data){
            if(data==1)
            {
              info_form.append("<span class='rouge'>Ce client existe déja</span>");
          
           }else{ ok++;}
            
            }
          
         });
       }
      else if(name=="siren")
       {
       	    	$.ajax({
            type: "GET",
            url: "verifcication_instantane_clients.php?siren="+value,
            success:function(data){
            if(data==1)
            {
              info_form.append("<span class='rouge'>Ce SIREN existe déja</span>");
              
            }else{ ok++;}
            
            }
          
         });
       }
       else if(name=="fr")
       {
       	    	$.ajax({
            type: "GET",
            url: "verifcication_instantane_clients.php?fr="+value,
            success:function(data){
            
            if(data==1)
            {
              info_form.append("<span class='rouge'>Ce FR existe déja</span>");
             
            }else{ ok++;}
            
            }
          
         });
       }
       if(ok == 3) {document.monforme.Submit.disabled = false; }else{document.monforme.Submit.disabled = true; }
         
    });	
    });             
          </script>
    


    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      22 février 2010 à 17:24:37

      Tu devrais essayer de modifier l'attribut disabled avec une chaine de caractère comme tu l'a fais au dessus, et non avec des booléens.
      • Partager sur Facebook
      • Partager sur Twitter
        22 février 2010 à 18:11:17

        Salut,

        Il y a donc en théorie une requête qui ne passe pas.
        Pour commencer essaie de trouver laquelle à coup de alert('Requête A');.
        Une fois que tu auras trouvé la requête qui pose problème il faut voir de quel côté ça bug (php ou js), toujours à coup d'alert() tu affiches ce que renvoie php tout simplement.

        Bonne chance.
        • Partager sur Facebook
        • Partager sur Twitter
        Venez sur Zeste de Savoir, on est bien :-) . Mon tuto PHPSpec.
          22 février 2010 à 18:55:43

          Non non, c'est juste que une fois la requête ajax partie, ton code n'attend pas la réponse pour s'éxecuté, en gros ça fait :

          - Appel de fonction
          - ok = 0
          - Envoi de l'ajax
          - if (ok == 3)
          - ok++;

          Donc voila, pas bon.
          • Partager sur Facebook
          • Partager sur Twitter
            22 février 2010 à 19:42:12

            Merci pour vos réponses .

            En gros , Je dois faire quoi ?

            Merci d'avance
            • Partager sur Facebook
            • Partager sur Twitter
              22 février 2010 à 22:21:33

              Perso je ne connais pas du tout jquery, mais essaie les alert(), on sera vite fixé.

              J'ai été jeter un rapide coup d'oeil à la doc de jquery et elle semble contredire Tiller (en clair la requête est bien exécutée quand ton code passe).
              Cependant comme je n'explique pas le bug il a peut être raison, une solution pour en être sûr est de tester ;) .
              • Partager sur Facebook
              • Partager sur Twitter
              Venez sur Zeste de Savoir, on est bien :-) . Mon tuto PHPSpec.
                22 février 2010 à 22:40:22

                $(document).ready(function(){
                	$("input").focus(function(){
                		var info_form=$(this).next(".info");
                		info_form.empty();
                	});
                	
                	var done = {};
                	
                	function check() {
                		var ok = 0;
                		
                		for (var i in done) {
                			if (done[i] == true) {
                				ok++;
                			}
                		}
                		
                		if (ok == 3) {
                			document.monforme.Submit.disabled = false;
                		}
                		else {
                			document.monforme.Submit.disabled = true;
                		}
                	}
                	
                	function ajaxIt(url, mess, name) {
                		$.ajax({
                			type: "GET",
                			url: url,
                			success:function(data){
                				if (data==1)
                				{
                					info_form.append(mess);
                				}
                				else {
                					done[name] = true;
                					
                					check();
                				}
                			}
                		});
                	}
                	
                	$("input").blur(function(){
                		var name=($(this).attr("name"));
                		var value=($(this).attr("value"));
                		var info_form=$(this).next(".info");
                		var errors = 0;
                		
                		if (value == undefined) {
                			info_form.append("<span class='rouge'>Obligatoire</span>");
                		}
                		else if(name == "societe") {
                			ajaxIt("verifcication_instantane_clients.php?nom_entreprise=" + value, "<span class='rouge'>Ce client existe déja</span>", name);
                		}
                		else if(name == "siren") {
                			ajaxIt("verifcication_instantane_clients.php?siren="+value, "<span class='rouge'>Ce SIREN existe déja</span>", name);
                		}
                		else if(name=="fr") {
                			ajaxIt("verifcication_instantane_clients.php?fr="+value, "<span class='rouge'>Ce FR existe déja</span>", name);
                		}
                	});	
                });
                



                Et non la doc ne me contredit pas :-°
                • Partager sur Facebook
                • Partager sur Twitter
                  22 février 2010 à 23:02:57

                  Merci Tiller pour ton code, mais il ne vérifie pas la societe etc...
                  Normal ? pourtant data==1 est bien présent .

                  Merci d'avance
                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 février 2010 à 23:07:59

                    Il ne vérifie pas la societe ? c'est à dire ?

                    Tu l'as testé ou tu dis ça en lisant le code ?

                    Car il fait comme le tient.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      22 février 2010 à 23:21:30

                      J'ai bien tester ton script .En effet le problème du bouton submit est résolu.Mais quand je tape le nom d'une societe,siren,fr qui existe déjà il ne me met rien.En gros il ne vérifie pas dans ma bdd .

                      Merci d'avance
                      • Partager sur Facebook
                      • Partager sur Twitter
                        22 février 2010 à 23:22:31

                        Bah après c'est toi qui a fail la vérification sans doute.

                        Fait un alert(data); juste après success: function(data) {
                        • Partager sur Facebook
                        • Partager sur Twitter
                          22 février 2010 à 23:28:57

                          quand je fais mon alert(data); me retourne bien 1. Ma vérification est donc bonne.

                          Merci d'avance
                          • Partager sur Facebook
                          • Partager sur Twitter
                            22 février 2010 à 23:31:12

                            Je peux voir ta page online ?

                            Et t'es sur de pas avoir confondu ?

                            Dans ton script, 1 = Existe deja, t'as pas fais l'inverse par hasard ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              22 février 2010 à 23:37:40

                              Normal,
                              j'ai mit un nom déjà existant ( alert me donne 1), quand je met un autre ca me donne 0 .

                              Merci d'avance



                              • Partager sur Facebook
                              • Partager sur Twitter
                                22 février 2010 à 23:39:16

                                Et donc au final c'est quoi le problème ?

                                Je comprend pas là, tout marche non ?

                                Edit: Rajoute :
                                done[name] = false;

                                Après :
                                info_form.append(mess);
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  22 février 2010 à 23:44:57

                                  Je t'explique : Quand je tape dans le champs "societe" le nom d'une societé qui existe deja je n'est rien qui s'affiche. alors que je devrais avoir : "Ce client existe déjà"

                                  Merci d'avance
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    22 février 2010 à 23:48:56

                                    Voila le code HTML :
                                    <form id="monForm" name="monforme" action="#" method="post">
                                    <p>
                                                <label for="form_firstname"></span>Nom de la societé : </label>
                                                <input type="text" id="form_firstname" name="societe" /> <span class="info"></span>
                                            </p>
                                    <p>
                                                <label for="form_firstname">Siren : </label>
                                                <input type="text" id="form_tel_socie" name="siren" /> <span class="info"></span>
                                            </p>
                                             <p>
                                                <label for="form_firstname">FR : </label>
                                                <input type="text" id="form_tel_socie" name="fr" /> <span class="info"></span>
                                            </p>
                                    <input type="submit"  id ="MonSubmit" name="monSubmit"  />
                                    


                                    Merci d'avance
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      22 février 2010 à 23:50:24

                                      Transformes :

                                      $("input").focus(function(){
                                      var info_form=$(this).next(".info");
                                      info_form.empty();
                                      });

                                      En :

                                      var info_form;
                                      	$("input").focus(function(){
                                      		info_form=$(this).next(".info");
                                      		info_form.empty();
                                      	});
                                      
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        22 février 2010 à 23:58:03

                                        ça ne marche toujours pas il y a juste "Obligatoire"(quand le champ est vide).
                                        Voila le code :
                                        $(document).ready(function(){
                                        	var info_form;
                                        	$("input").focus(function(){
                                        		info_form=$(this).next(".info");
                                        		info_form.empty();
                                        	});
                                        	
                                        	var done = {};
                                        	
                                        	function check() {
                                        		var ok = 0;
                                        		
                                        		for (var i in done) {
                                        			if (done[i] == true) {
                                        				ok++;
                                        			}
                                        		}
                                        		
                                        		if (ok == 3) {
                                        			document.monforme.Submit.disabled = false;
                                        		}
                                        		else {
                                        			document.monforme.Submit.disabled = true;
                                        		}
                                        	}
                                        	
                                        	function ajaxIt(url, mess, name) {
                                        		$.ajax({
                                        			type: "GET",
                                        			url: url,
                                        			success:function(data){
                                        			
                                        				if (data==1)
                                        				{
                                        				
                                        					info_form.append(mess);
                                        					
                                        				}
                                        				else {
                                        					done[name] = true;
                                        					
                                        					check();
                                        				}
                                        			}
                                        		});
                                        	}
                                        	
                                        	$("input").blur(function(){
                                        		var name=($(this).attr("name"));
                                        		var value=($(this).attr("value"));
                                        		var info_form=$(this).next(".info");
                                        		var errors = 0;
                                        		
                                        		if (value == undefined) {
                                        			info_form.append("<span class='rouge'>Obligatoire</span>");
                                        		}
                                        		else if(name == "societe") {
                                        			ajaxIt("verifcication_instantane_clients.php?nom_entreprise=" + value, "<span class='rouge'>Ce client existe déja</span>", name);
                                        		}
                                        		else if(name == "siren") {
                                        			ajaxIt("verifcication_instantane_clients.php?siren="+value, "<span class='rouge'>Ce SIREN existe déja</span>", name);
                                        		}
                                        		else if(name == "fr") {
                                        			ajaxIt("verifcication_instantane_clients.php?fr="+value, "<span class='rouge'>Ce FR existe déja</span>", name);
                                        		}
                                        	});	
                                        });
                                        


                                        Merci d'avance
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          23 février 2010 à 0:01:58

                                          Citation : Tiller

                                          Je peux voir ta page online ?

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            23 février 2010 à 0:07:40

                                            Désolé. C'est une application Intranet pour une entreprise.Donc pas de FTP :s

                                            Je peux juste faire l'intermédiaire entre toi et la page

                                            Encore merci pour ton aide
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              23 février 2010 à 0:10:17

                                              function ajaxIt(url, mess, name) {
                                              		$.ajax({
                                              			type: "GET",
                                              			url: url,
                                              			success:function(data){
                                              			
                                              				if (data==1)
                                              				{
                                              					alert(mess);
                                              					alert(info_form.html());
                                              					info_form.append(mess);
                                              					
                                              				}
                                              				else {
                                              					done[name] = true;
                                              					
                                              					check();
                                              				}
                                              			}
                                              		});
                                              	}
                                              
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                23 février 2010 à 0:13:01

                                                Yeah !cette fois j'ai les erreurs dans les alerts

                                                Merci d'avance
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  23 février 2010 à 0:14:28

                                                  Que t'affiches la 2ème alert ?
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    23 février 2010 à 0:16:36

                                                    La 2eme alert m'affiche "Null"
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      23 février 2010 à 0:19:29

                                                      Je crois que c'est on $(this).next(".info"); qui merde.

                                                      Essaies :

                                                      var info_form;
                                                      	$("input").focus(function(){
                                                      		info_form = this;
                                                      		while (info_form.className!='info'){ info_form = info_form.nextSibling; }
                                                      		info_form = $(info_form);
                                                      		info_form.empty();
                                                      	});
                                                      

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        23 février 2010 à 0:23:39

                                                        Ca avance :D Il y a une seul erreur qui s'affiche "Siren".
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          23 février 2010 à 0:24:14

                                                          càd ?

                                                          $(document).ready(function(){
                                                          	var done = {};
                                                          	
                                                          	function check() {
                                                          		var ok = 0;
                                                          		
                                                          		for (var i in done) {
                                                          			if (done[i] == true) {
                                                          				ok++;
                                                          			}
                                                          		}
                                                          		
                                                          		if (ok == 3) {
                                                          			document.monforme.Submit.disabled = false;
                                                          		}
                                                          		else {
                                                          			document.monforme.Submit.disabled = true;
                                                          		}
                                                          	}
                                                          	
                                                          	function ajaxIt(url, mess, name, form) {
                                                          		$.ajax({
                                                          			type: "GET",
                                                          			url: url,
                                                          			success:function(data){
                                                          			
                                                          				if (data==1)
                                                          				{
                                                          				
                                                          					form.html(mess);
                                                          					
                                                          				}
                                                          				else {
                                                          					done[name] = true;
                                                          					
                                                          					check();
                                                          				}
                                                          			}
                                                          		});
                                                          	}
                                                          	
                                                          	$("input").blur(function(){
                                                          		var name=($(this).attr("name"));
                                                          		var value=($(this).attr("value"));
                                                          		var info_form = this;
                                                          		while (info_form.className!='info'){ info_form = info_form.nextSibling; }
                                                          		info_form = $(info_form);
                                                          
                                                          		
                                                          		if (value == undefined) {
                                                          			info_form.html("<span class='rouge'>Obligatoire</span>");
                                                          		}
                                                          		else if(name == "societe") {
                                                          			ajaxIt("verifcication_instantane_clients.php?nom_entreprise=" + value, "<span class='rouge'>Ce client existe déja</span>", name, info_form);
                                                          		}
                                                          		else if(name == "siren") {
                                                          			ajaxIt("verifcication_instantane_clients.php?siren="+value, "<span class='rouge'>Ce SIREN existe déja</span>", name, info_form);
                                                          		}
                                                          		else if(name == "fr") {
                                                          			ajaxIt("verifcication_instantane_clients.php?fr="+value, "<span class='rouge'>Ce FR existe déja</span>", name, info_form);
                                                          		}
                                                          	});	
                                                          });
                                                          
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            23 février 2010 à 0:26:50

                                                            Il y a écrit "Ce SIREN existe déjà" Mais marche pas pour societe

                                                            Merci d'avance
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            Probleme de submit disabled

                                                            × 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