Partage
  • Partager sur Facebook
  • Partager sur Twitter

Validation de formulaire dynamique

Boucle For ... If

Sujet résolu
    9 janvier 2011 à 0:48:22

    Bonjour a tous,

    Je galere sur la construction d'une boucle pour valider des champs de formulaire.

    Ci-dessous mon formulaire:
    <div id="Scrollbar">	
    	<div id="Accounts">
    	
    		<div id="Account_1">
    			<input type="text" name="Account[]" id="Account_1" class="Mandatory"/>
    		</div>
    	</div>
    </div>
    


    Ce formulaire est dynamique.
    J'ai créé une fonction Javascript qui me permet d'ajouter des div contenant un nouveau input.

    Je souhaite vérifier que ces input ajoutés dynamiquement ne soient pas vide avant d'envoyer mon formulaire. Si vide alors un message d'erreur apparait dans une div Error insérée dans plus haut page.
    J'ai commencé le code suivant mais je n'arrive pas a construire ma boucle For ... if :colere2:

    var ErrorMsg = document.getElementById('Error');
    ErrorMsg.innerHTML = '';
    ErrorMsg.className = 'NoError';
    
    var divs = document.getElementById('Accounts').getElementsByTagName('div');
    var i = 1;
    
    for (i = 1; i <= divs.length; i++)
    {
    	var inputs = document.getElementById('Account_' + i).value;
    	if(inputs.length < 1)
    		{
    			ErrorMsg.className = 'Error';
    			ErrorMsg.innerHTML += 'Account Number is a mandatory field. Please complete (numeric entries only / max length 12)';
    			return false;
    		}
    }
    return true;
    


    Si mon premier input est vide, j'ai bien le message d'erreur, mais si j'insère un deuxième input que je laisse vide, aucun message d'erreur ne s'affiche. Or je souhaiterai avoir le message d'erreur puisque un des inputs est vide.

    Quelqu'un pourrait-il m'aider svp?
    • Partager sur Facebook
    • Partager sur Twitter
      9 janvier 2011 à 4:52:16

      Pourrais-tu nous faire un alert(divs.length); s.v.p. ?
      Peut-être le problème vient-il qu'il ne repère que ton premier input et non pas le reste ?
      • Partager sur Facebook
      • Partager sur Twitter
        9 janvier 2011 à 15:10:19

        J'ai déjà essayé et ca ne semble pas etre le probleme.

        Si je fais:
        for (i = 1; i <= divs.length; i++)
        {
        	alert(divs.length);
        }
        


        Cela m'affiche bien le nombre de div i.e. s'il y a 2 divs (=2 inputs) j'ai bien 2 fois un alert affichant 2.
        Je pense que le problème vient plus de la construction de ma condition if. Il faudrait que si mon input 1 n'est pas vide, alors je vérifie le 2eme input, et si celui-ci est vide alors j'affiche mon message d'erreur.
        • Partager sur Facebook
        • Partager sur Twitter
          9 janvier 2011 à 16:08:38

          Salut,
          if(inputs === "")
          

          devrait marcher
          • Partager sur Facebook
          • Partager sur Twitter
            9 janvier 2011 à 16:15:35

            Non cela ne fonctionne toujours pas.
            Si j'ai 2 inputs et que je laisse le deuxième vide je n'ai toujours pas de message d'erreur.
            Si je n'ai qu'un seul input alors pas de problème: si vide,j 'ai bien le message d'erreur, si rempli rien.
            • Partager sur Facebook
            • Partager sur Twitter
              9 janvier 2011 à 16:32:18

              L'ajout ne doit pas bien se faire au niveau du DOM, as-tu pensé à regarder la source après ajout d'inputs ? (pas Ctrl+U mais sous Firefox par exemple sélectionner les 2 inputs et faire clic-droit Code source de la sélection)
              • Partager sur Facebook
              • Partager sur Twitter
                9 janvier 2011 à 17:08:28

                Un tableau commence à l'index 0, et se termine à l'index length-1

                Donc :

                for (i = 0; i < divs.length; i++) {
                • Partager sur Facebook
                • Partager sur Twitter
                  9 janvier 2011 à 20:17:56

                  Bon j'ai enfin trouvé mon erreur.
                  Effectivement le probleme etait au niveau du DOM.
                  Il manquait un guillemet dans mon code ...

                  Merci a tous pour votre aide.

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Validation de formulaire dynamique

                  × 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