Partage
  • Partager sur Facebook
  • Partager sur Twitter

validation formulaire

variable dont le nom est variable... eval()?

Sujet résolu
    5 novembre 2008 à 15:53:26

    voila j'ai un gros formulaire et je vérifie ce kil contient avec cette fonction :
    var login_ok=false;
    		var mdp_ok=false;
    		var email_ok=false;
    		function verif(truk)
    		{
    			if(document.getElementById('i1_'+truk).value != '')
    			{
    				if(document.getElementById('i2_'+truk).value != '')
    				{
    					if(document.getElementById('i1_'+truk).value == document.getElementById('i2_'+truk).value)
    					{
    						alert('Cette partie du formulaire est bien remplie!\nT\'as plus qu\'à éspérer que personne n\'a pris ce '+truk+'!');
    						eval(truk+'_ok')=true;
    						alert(eval(truk+'_ok'));
    					}
    					else
    					{
    						alert('Les deux '+truk+'s que tu as entré ne sont pas identiques!');
    					}
    				}
    				else
    				{
    					alert('Tu dois confirmer ton '+truk+'!');
    				}
    			}
    			else
    			{
    				alert('Tu dois entrer un '+truk+'!');
    			}
    		}
    


    sauf que
    eval(truk+'_ok')=true;
    alert(eval(truk+'_ok'));
    ne marche pas...
    je croi que j'ai un peu utilisé une fonction au mauvais endroit... mais je vois pas comment faire autrement...
    le but c'est que ca modifie une des 3 variables définies au début pour lui donner true comme valeur... ca peut se faire avec des if... mais c'est long et je pense qu'il y a plus court(j'ai faillit dire simple mais en fait non :p )
    • Partager sur Facebook
    • Partager sur Twitter
      5 novembre 2008 à 16:31:56

      Bonjour,
      Tes variables sont globales, donc attributs de l'objet window.
      D'où :
      var login_ok = false;
      var mdp_ok = false;
      var email_ok = false;
      function verif(truk)
      {
      	var i1 = document.getElementById('i1_' + truk).value;
      	var i2 = document.getElementById('i2_' + truk).value;
      	if(i1 != '')
      	{
      		if(i2 != '')
      		{
      			if(i1 == i2)
      			{
      				alert('Cette partie du formulaire est bien remplie!\nT\'as plus qu\'à éspérer que personne n\'a pris ce ' + truk + '!');
      				window[truk + '_ok'] = true;
      				alert(window[truk + '_ok']);
      			}
      			else
      				alert('Les deux ' + truk + 's que tu as entré ne sont pas identiques !');
      		}
      		else
      			alert('Tu dois confirmer ton ' + truk + ' !');
      	}
      	else
      		alert('Tu dois entrer un ' + truk + ' !');
      }
      

      Cependant, pourquoi ne pas faire plus simple ?
      Une fonction qui vérifie le truc, et qui retourne true (ou false) selon qu'il est bon ou pas.
      Par exemple :
      function verifier(truc)
      {
      	var i1 = document.getElementById('i1_' + truc);
      	var i2 = document.getElementById('i2_' + truc);
      	if(i1 == '')
      	{
      		alert('Tu dois entrer un ' + truc + ' !');
      		return false;
      	}
      	else if(i2 == '')
      	{
      		alert('Tu dois confirmer ton ' + truc + ' !');
      		return false;
      	}
      	else if(i1 != i2)
      	{
      		alert('Les deux ' + truc + 's que tu as entré ne sont pas identiques...');
      		return false;
      	}
      	else
      	{
      		alert('Cette partie du formulaire est bien remplie!\nT\'as plus qu\'à éspérer que personne n\'a pris ce ' + truc + ' !');
      		return true;
      	}
      }
      

      Et stocker le retour de la fonction dans une variable à chaque appel.
      Car, que se passe-t-il si le login est bon, mais pas les deux autres, puis que l'utilisateur modifie son login mais pas la confirmation (donc, il n'est plus bon), mais qu'il corrige le mot de passe et l'email ?
      La variable login_ok vaut toujours true !
      Et en plus, si login_ok n'est pas dans le contexte global, c'est moins facile...
      P.S. : N'oublies pas que la vérification JS n'est pas une alternative à celle en PHP ou autre langage serveur et qu'il faut quand même le faire !
      En espérant t'avoir aidé,
      cbasile06
      • Partager sur Facebook
      • Partager sur Twitter
        5 novembre 2008 à 16:48:59

        merci!
        pour ta première réposne... la 2ème me forcerait a revoir mno code et j'ai vraiement pas envi :p
        en fait ce que je veux c'est : une petite fonction qui vérifie chaque aprtie du formulaire individuellement:
        var oui='<img src="../images/autres/oui.png" alt="oui!" />'
        		var non='<img src="../images/autres/non.png" alt="non!" />'
        		var different='<img src="../images/autres/different.jpg" alt="non!" />'
        		var login_ok=false;
        		var mdp_ok=false;
        		var email_ok=false;
        		function verif(truk)
        		{
        			if(truk=='mdp')
        			{
        				truk2='mot de passe';
        			}
        			else
        			{
        				truk2=truk;
        			}
        			if(truk=='mdp')
        			{
        				truk2pl='mots de passe';
        			}
        			else
        			{
        				truk2pl=truk+'s';
        			}
        			if(document.getElementById('i1_'+truk).value != '')
        			{
        				document.getElementById('o1_'+truk).innerHTML=oui;
        				if(document.getElementById('i2_'+truk).value != '')
        				{
        					document.getElementById('o2_'+truk).innerHTML=oui;
        					if(document.getElementById('i1_'+truk).value == document.getElementById('i2_'+truk).value)
        					{
        						alert('Cette partie du formulaire est bien remplie!');
        						if(truk!='mdp' && truk!='email')
        						{
        							alert('Tu n\'as plus qu\'à éspérer que personne n\'a pris ce '+truk2+'!');
        						}
        						document.getElementById('o1_'+truk).innerHTML=oui;
        						document.getElementById('o2_'+truk).innerHTML=oui;
        						var ok=true;
        					}
        					else
        					{
        						alert('Les deux '+truk2pl+' que tu as entré ne sont pas identiques!');
        						document.getElementById('o1_'+truk).innerHTML=different;
        						document.getElementById('o2_'+truk).innerHTML=different;
        					}
        				}
        				else
        				{
        					alert('Tu dois confirmer ton '+truk2+'!');
        					document.getElementById('o2_'+truk2).innerHTML=non;
        				}
        			}
        			else
        			{
        				alert('Tu dois entrer un '+truk2+'!');
        				document.getElementById('o1_'+truk).innerHTML=non;
        				document.getElementById('o2_'+truk).innerHTML='';
        			}
        			if(ok == true)
        				{
        				window[truk + '_ok'] = true;
        				}
        			else
        				{
        				window[truk + '_ok'] = false;
        				}
        		}
        



        et une en fin de formulaire qui vérifie si tout a bien été validé...
        bien sur je suis pas stupide donc j'ai des onchange sur les input qui remettent a false...

        comme ca j'ais un grosse fonction qui te dit dans quelle partie du formulaire tu t'es planté, puis tu vérifie cette partie seule et ça te dit exactement quelle erreur tu as fait!
        • Partager sur Facebook
        • Partager sur Twitter

        validation formulaire

        × 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