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 formulaire et envoi


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 43
    Points
    43
    Par défaut verification formulaire et envoi
    Bonsoir à tous.

    je vous explique le contexte :
    j'ai un formulaire en html comprenant 4 champs sur www.mondomaine.com
    formulaire en méthode POST. envoi à un fichier sur http://sousdomaine.mondomaine.com

    je vérifie à l'aide d'une fonction javascript la validité des champs et envoie les données à ma page de récéption.

    voici mon code js :
    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
     
    function verif() {
    		if (document.formulaire.nom.value.length<1||document.formulaire.nom.value==' '){
    			document.getElementById("mess").value='Indiquez votre nom';
    			}
    		else if (document.formulaire.prenom.value.length<1||document.formulaire.prenom.value==' '){ 
    			document.getElementById("mess").value='Indiquez votre prénom';
    			}
    		else if (document.formulaire.email.value.indexOf('.')==-1||document.formulaire.email.value.indexOf('@')==-1){
    			document.getElementById("mess").value='Indiquez votre e-mail';
    			}
    		else if (document.formulaire.choix.status==''){
    			document.getElementById("mess").value='Choissez votre statut';
    			}
    		else if (!document.formulaire.condgen.checked){
    			document.getElementById("mess").value='Lisez les conditions générales';
    			}
    		else {
    			//document.getElementById("mess").value='ok';
    			document.getElementById("formulaire").submit();
    		}
    	}
    et mon formulaire html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <form name="formulaire" method="POST" action="http://sousdomaine.mondomaine.com/form.php" >
    					<span class="jaune">Nom </span><input name="nom" type="text" maxlength="20"  />
    					<span class="jaune">Pr&eacute;nom </span><input name="prenom" type="text"  maxlength="20"  />								<span class="rose">E-mail </span><input name="email" type="text" maxlength="30"  />
    					<input name="choix" type="radio" value="1" /><span class="bleu">choix1</span>
    					<input name="choix" type="radio" value="2" /><span class="bleu">choix2</span>
    					<input name="choix" type="radio" value="3" /><span class="bleu">choix3</span>
    					<input name="choix" type="radio" value="4" /><span class="bleu">choix4</span><br />
    					<input name="mess" type="text" size="30" />
    					<span class="blanc">J&acute;accepte les conditions</span><input name="condgen" type="checkbox" /><br />
    					<input type="submit" name="envoidonnees" value="VALIDER" class="btonvalid" onclick="verif()" /><br />
    			  	</form>
    Voilà , alors j'ai un pb qui me bloque depuis pas mal de temps.
    la fonction est bien lancée, et vérifie les champs, mais des que le bouton valider est enfoncé, l'envoi en POST s'effectue vers form.php.
    je suis donc ennuyé car je ne veux pas que les données soient envoyées ( action du formulaire) avant que le formulaire soit vérifié completement.
    comment dire je vérifie, puis j'envoie. et non comme c'est le cas, je vérifie et j'envoie en mm temps....

    je suis largué!!
    j'ai bien trouvé des sources, mais rien ne fonctionne, je pense que je ne suis pas loin de la solution là, mais un oeil expert serai le bienvenu

    Merci à tous pour votre aide, je galere

    @+
    Padaben

    Edit ' désolé, je pas prkoi ds le code html, j'ai une ligne de formulaire qui c'est barée à l'est !!

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    C'est normal ton bouton est de type submit.

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 43
    Points
    43
    Par défaut re salut
    est il préférable de l'avoir de type button ?

    et pourkoi ? puisque je suis censé envoyer des données via POST?

    merci de ton aide

    Padaben

  4. #4
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Si tu as un bouton de type submit il envoi les données quoi que tu fasses. Ce n'est pas une alert qui va l'en empêcher.

    Fais des recherches sur la fonction submit() en javascript.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Utilise un onSubmit sur ton formulaire, de cette manière, la fonction JS s'effectuera avant de le soumettre. Une autre solution consiste à remplacé ton input type='submit' par un type button et d'appeler ta fonction de vérification lorsqu'on clique dessus.

    Deux choix donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="formulaire" method="POST" action="http://sousdomaine.mondomaine.com/form.php" onSubmit='verif();'>
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" name="envoidonnees" value="VALIDER" class="btonvalid" onclick="verif()" />
    Le onClick sur un bouton submit ne sers à rien dans ton cas.

  6. #6
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par Madge
    Utilise un onSubmit sur ton formulaire, de cette manière, la fonction JS s'effectuera avant de le soumettre. Une autre solution consiste à remplacé ton input type='submit' par un type button et d'appeler ta fonction de vérification lorsqu'on clique dessus.
    Seul le premier choix est une technique valable. Un input button, c'est mââââl.

    Cf faq:
    http://javascript.developpez.com/faq...s#ControleForm

    Il faut bien mettre un return dans le onsubmit, pour stopper le submit si ta vérification retourne false:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="formulaire" method="POST" action="http://sousdomaine.mondomaine.com/form.php" onSubmit='return verif();'>

  7. #7
    Membre actif Avatar de Seb19
    Homme Profil pro
    Concepteur SOA
    Inscrit en
    Septembre 2005
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Concepteur SOA

    Informations forums :
    Inscription : Septembre 2005
    Messages : 217
    Points : 292
    Points
    292
    Par défaut
    Bonjour,

    Si tu peux laisser le type du bouton en submit, mais à ce moment là, il faut virer le onClick, rajouter onSubmit dans la balise form et modifier ta fonction javascript afin qu'elle retourne true ou false.
    Si elle renvoie false, le formulaire ne sera pas soumis.

    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
    function verif() {
    		if (document.formulaire.nom.value.length<1||document.formulaire.nom.value==' '){
    			document.getElementById("mess").value='Indiquez votre nom';
                            return false;
    			}
    		else if (document.formulaire.prenom.value.length<1||document.formulaire.prenom.value==' '){ 
    			document.getElementById("mess").value='Indiquez votre prénom';
                            return false;
    			}
    		else if (document.formulaire.email.value.indexOf('.')==-1||document.formulaire.email.value.indexOf('@')==-1){
    			document.getElementById("mess").value='Indiquez votre e-mail';
                            return false; 
    			}
    		else if (document.formulaire.choix.status==''){
    			document.getElementById("mess").value='Choissez votre statut';
                            return false;
    			}
    		else if (!document.formulaire.condgen.checked){
    			document.getElementById("mess").value='Lisez les conditions générales';
                            return false;
    			}
    		else {
    			//document.getElementById("mess").value='ok';
    			//document.getElementById("formulaire").submit();
                            return false;
    		}
    	}
    
    
    
    <form name="formulaire" method="POST" action="http://sousdomaine.mondomaine.com/form.php"  onSubmit="return verif()">
    					<span class="jaune">Nom </span><input name="nom" type="text" maxlength="20"  />
    					<span class="jaune">Pr&eacute;nom </span><input name="prenom" type="text"  maxlength="20"  />								<span class="rose">E-mail </span><input name="email" type="text" maxlength="30"  />
    					<input name="choix" type="radio" value="1" /><span class="bleu">choix1</span>
    					<input name="choix" type="radio" value="2" /><span class="bleu">choix2</span>
    					<input name="choix" type="radio" value="3" /><span class="bleu">choix3</span>
    					<input name="choix" type="radio" value="4" /><span class="bleu">choix4</span><br />
    					<input name="mess" type="text" size="30" />
    					<span class="blanc">J&acute;accepte les conditions</span><input name="condgen" type="checkbox" /><br />
    					<input type="submit" name="envoidonnees" value="VALIDER" class="btonvalid"/><br />
    			  	</form>

  8. #8
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		else {
    			//document.getElementById("mess").value='ok';
    			//document.getElementById("formulaire").submit();
                            return true;
    		}
    Dans le dernier else, pense à retourner true

  9. #9
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 43
    Points
    43
    Par défaut Salut !!
    merci pour cette info, j'ai bien lu des infos sur submit et button, je vois maintenant la #.

    cependant mon script fonctionne bien sous ie, mais pas sous FF, le formulaire est bien validé, mais apres l'envoi ne s'effectue pas !

    je vous met les lignes essentielles du code, et non le tout:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function verif(formulaire) {
    		if (document.formulaire.nom.value.length<1||document.formulaire.nom.value==' '){
    			document.getElementById("mess").value='Indiquez votre nom';
    			return false;
    			}else {
    			return true;
    			document.getElementById("mess").value=' ';
    			document.forms['formulaire'].submit()
    		}
    	}
    et le formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <form name="formulaire" method="POST" action="sousdomaine.mondomaine.com/form.php" >
    <input patatipatata>
    ................
    <input type="button" name="doc" value="VALIDER" class="btonvalid" onclick="return verif(this.form)" />
    			  	</form>
    ou pour la derniere ligne, j'ai aussi essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="button" name="doc" value="VALIDER" class="btonvalid" onclick="verif(formulaire)" />
    mais rien y fait, c ok sous ie, mais FF me bloque l'envoi,

    Merci pour vos conseils avertis !

    @+
    Padaben

  10. #10
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par PadaBen
    merci pour cette info, j'ai bien lu des infos sur submit et button, je vois maintenant la #.

    cependant mon script fonctionne bien sous ie, mais pas sous FF, le formulaire est bien validé, mais apres l'envoi ne s'effectue pas !
    Utilise un bouton submit normal et l'évement onsubmit de ton formulaire.....


    Avec ta technique, quelqu'un qui n'a pas le javascript ne pourra pas valider ton formulaire. Et je ne te parle pas de l'accessiblité dans les navigateurs spéciaux....

  11. #11
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 43
    Points
    43
    Par défaut MERCI DenisC pour tant de réactivité
    Merci vraiment de votre aide, cela fonctionne maintenant, effectivement il faut bien utiliser le type de bouton submit et ne pas oublier de mettre onSubmit='return verif()'

    sans le return c mort...


    Enfin, merci encore de votre aide, et je persiste à dire que ce forum developpez est particulièrement professionnel, j'en suis très content

    MErci continuez

    @+

    Padaben

  12. #12
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 43
    Points
    43
    Par défaut une dernière petite question
    dans la vérification de mon formulaire, je vérifie si un des boutons radio a bien été activé...

    j'ai essayé ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    else if (document.formulaire.choix.status==''){
    	document.getElementById("mess").value='Choissez votre statut';
    j'ai trouvé sur le net plein de méthodes différentes pour détecter l'activation d'une radio, mais aucune ne fonctionne, celle ci non plus,

    est il préférable de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (
    else if (!document.formulaire.choix.checked){
    	document.getElementById("mess").value='Choissez votre statut';
    MErci pour cette précision
    Padaben

  13. #13
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    else if((!document.formulaire.choix[0].checked)&&(!document.formulaire.choix[1].checked)[...]){
    	document.getElementById("mess").value='Choissez votre statut';
    }

  14. #14
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Autre solution (pour un nombre arbitraire de radios), il faut calculer avant si un radio est activé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var unCoche = false;
    for (i=0;i<document.formulaire.choix.length;i++)
    {
      unCoche = unCoche || document.formulaire.choix[i].checked;
    }
    Après, tu n'as plus qu'à faire le test sur unCoche... (mais c'est la même solution que BisounoursJos)

  15. #15
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 115
    Points : 43
    Points
    43
    Par défaut RE Sallut !
    j'ai effectué la condition de BisounoursJos, et ca fonctionne,
    Merci Denis C, pour ta précision.

    Encore Grand merci à tous...

    bonne journée, je clos le post.

    @+ Padaben

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

Discussions similaires

  1. [MySQL] vider formulaire apres envoi
    Par nestam dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 31/10/2005, 15h29
  2. Formulaire PHP+ envoi de fichier joint
    Par GraphicProvider dans le forum Langage
    Réponses: 2
    Dernier message: 29/10/2005, 18h12
  3. Formulaire d'envoie de pieces jointes
    Par tonton59 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 02/09/2005, 13h44
  4. [Debutant]Formulaire d'envoie de mail
    Par Wyatt dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 31/01/2005, 21h04

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