IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Verification form dynamique


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 116
    Par défaut Verification form dynamique
    Bonjour à tous,
    Voila j'ai un formulaire dynamique ou lorsqu'on clique sur un bouton sa ajoute de lignes
    Sur les input de mes lignes j'aimerais faire des test pour veriieir l'email si les champs sont remplit etc...grâce au
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onSubmit="return test()"
    Le problème c'est que avec la fonction que j'ai crée si dessous sa tient en compte que il y en un de mauvais mais le problème ets que dés que sa en trouve un de bon sa retourne donc vrai et alors le formulaire se valide alors que peut être une ligne d'avant ou d'après il y aura une erreur



    compteur=0;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    function test()
           {
     
    	for(var i=compteur; i>0; i++)
    		{
     
    	var email=document.getElementById('personne_'+i).value;
        var origine=document.getElementById('origine_'+i).value;	
    	  var lieu=document.getElementById('lieu_'+i).value;
     
     
    		if(origine=="") //si pas de frs  entrer
              {
                 alert("Veuillez entrer le champ origine SVP");
    			 	bool= false;
              }
    		else {
    				if(lieu=="") //si pas de frs  entrer
    				{
                 alert("Veuillez entrer le champ lieu SVP");
    			 bool= false;
    				}
    				else 
    				{     
     
    					var reg = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$/;
    					var result = ((reg.exec(email)!=null));
    						if(result==false) //si l'email n'est pas valide
    					{
     
    					alert("L\'email saisi n\'est pas valide !");
    					bool= false;
    					}
    					else
    					{
    					bool= true;
    					}
    				}
     
    			}	
     
     
    		  }
    		  return bool;
    	}


    Merci de votre aide.
    Pce la je suis en train de peter un plomb ^^

  2. #2
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    1) C'est quoi ce compteur ? Une globale ? si oui, comment est-elle initialisée / modifiée ? parce que la condition (i>0) de ta boucle for me semble étrange : quand est-ce que la valeur de compteur est décrémentée ?

    2) peut-on voir le code de ton form aussi ?

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 116
    Par défaut
    compteur c'est une variable globale qui n'est jamais décrémente mais toujours incrémente.
    en fait pour la boucle for j'aurais trés bien pu la faire partir de l'autre sens


    Le compteur est incrementé ds la fonction pour ajouter des lignes addRow()
    et egalement ds la fonction addRow2() qui ajoute les meme lignes au debut (onload) sauf que leur valeur est affecté par requête SQL dans un fichier XML.

    en gros :

    voila la fonction pour ajouter des lignes lors d'un clic par l'utilisateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    function AddRow(){
     
     
     
     
     
     
     
     
    compteur++; //ajout d'un ligne on incremente le compteur
    inc++;
    //liste de tout les input que l'on trouve dans le tableau ligne d e produit
    var input0=document.createElement('input');
    input0.type = 'button';
    input0.name ="supprimer";
    input0.value="Supprimer";
     
     
    input0.onclick=function()
    {
    suppression(this.parentNode.parentNode.id);
    }
     
     
    var input1=document.createElement('input');
    input1.type = 'text';
    input1.name ="codeAAMM_"+compteur;
    var input2=document.createElement('input');
    input1.style.width="80px";
    input1.value=affichedate();
     
     
     
     
     
     
    input2.type = 'text';
    input2.name ="date_"+compteur;	
    input2.style.width="120px";
     
     
    var input3=document.createElement('input');
    input3.type = 'text';
    input3.name ="origine_"+compteur;	
    input3.id="origine_"+compteur;
    input3.ref = compteur;
    input3.style.width="80px";
     
    var input4=document.createElement('input');
    input4.type = 'text';
    input4.name ="personne_"+compteur;
    input4.id="personne_"+compteur;
    input4.ref = compteur;
    input4.style.width="115px";
     
     
    var input5=document.createElement('input');
    input5.type = 'text';
    input5.name ="lieu_"+compteur;
    input5.id="lieu_"+compteur;
    input5.ref = compteur;
    input5.style.width="110px";
     
    var input6=document.createElement('input');
    input6.type = 'text';
    input6.name ="Numero_"+compteur;
    input6.id="Numero_"+compteur;
    input6.ref = compteur;
    input6.style.width="170px";
     
    var input7=document.createElement('input');
    input7.type = 'text';
    input7.name ="visa_"+compteur;
    input7.id="visa_"+compteur;
    input7.ref = compteur;
    input7.style.width="70px";
     
    var input8=document.createElement('input');
    input8.type = 'text';
    input8.name ="statut_"+compteur;
    input8.id="statut_"+compteur;
    input8.ref = compteur;
    input8.style.width="50px";
    input8.value="Attente";
    input8.readOnly=true;
     
    var input9=document.createElement('input');
    input9.type = 'text';
    input9.name ="da_"+compteur;
    input9.id="da_"+compteur;
    input9.ref = compteur;
    input9.style.width="110px";
    input9.value="Inconnu";
    input9.readOnly=true;
     
     
     
     
     
     
     
    //on crée un nouvelle ligne puis les nouvelles cellules a l'interieur
     
        var newRow = document.getElementById('table').insertRow(1);
    	newRow.id="ligne"+compteur;
        var newCell = newRow.insertCell(0);
     newCell.appendChild(input0);
    	 newCell = newRow.insertCell(0);
    	newCell.appendChild(input1);
        newCell = newRow.insertCell(1);
        newCell.appendChild(input2);
    	 newCell = newRow.insertCell(2);
       newCell.appendChild(input3);
    	 newCell = newRow.insertCell(3);
         newCell.appendChild(input4);
    	 newCell = newRow.insertCell(4);
       newCell.appendChild(input5);
    	 newCell = newRow.insertCell(5);
    	  newCell.appendChild(input6);
    	 newCell = newRow.insertCell(6);
    	 newCell.appendChild(input7);
    	 newCell = newRow.insertCell(7);
    	 	newCell.appendChild(input8);
    	 newCell = newRow.insertCell(8);
    		newCell.appendChild(input9);
    	 newCell = newRow.insertCell(9);
     
    }

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    bongo !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    input0.name ="supprimer";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    input1.name ="codeAAMM_"+compteur;
    etc ...

    sous IE le name ne peut être attribué au runtime ...
    voir l'article dans les contributions sur 'FROM DYNAMIQUE'
    http://www.developpez.net/forums/d53...ynamique-form/
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Avec une valeur positive de compteur (comme c'est donc toujours le cas si j'ai bien compris), la valeur de i, étant incrémentée à chaque passage dans la boucle, ne sera jamais < 0 donc la boucle doit tourner à l'infini. Non ? ^^

    Ne devrait-ce pas être plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for (var i = 0 ; i < compteur ; i++)
    ?

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 116
    Par défaut
    oups boulette ^^
    en fait c'est i-- ^^
    m'enfin voila toujours le meme probleme
    par exemple j'ai rentré une premiere ligne correct
    puis je rentre une deuxieme ligne vide
    donc sa m'affiche que le champ orinige n'est pas valide et PAF sa valide le formulaire alors sa aurait du retourner false et me laisser le temps de corriger
    Merci!

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    ça ne resoud pas le problème du name ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function check(FormId)
    {
    	var Obj=document.getElementById(FormId);
    	for (var i = 0; i < Obj.elements.length; i++)
    	{
    		if (Obj.elements[i].type == "text") 
    			{if(Obj.elements[i].value = "")
    				{alert('Des champs vides') return false};}
    	}
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Changer la couleur d'une forme dynamique
    Par achos dans le forum Flash
    Réponses: 9
    Dernier message: 21/03/2007, 17h57
  2. Réponses: 5
    Dernier message: 27/09/2006, 14h07
  3. Question sur l'affichage d'une form dynamique?
    Par Jayceblaster dans le forum Delphi
    Réponses: 1
    Dernier message: 18/09/2006, 14h36
  4. Forms "dynamiques"
    Par mobee dans le forum C++Builder
    Réponses: 7
    Dernier message: 20/12/2005, 16h41
  5. Pb de verif form avec un champ array []
    Par deloo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/09/2005, 11h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo