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 :

Appel fonction JS sur condition dans un onsubmit


Sujet :

JavaScript

  1. #1
    Membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Avril 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2014
    Messages : 92
    Points : 53
    Points
    53
    Par défaut Appel fonction JS sur condition dans un onsubmit
    Bonjour à tous,

    Dans un formulaire je fais une vérification de validité sur un champ "adresse email" via une fonction JavaScript sur un onsubmit dans ma balise form.
    Mais je souhaite faire cette vérification de validité uniquement si le champ est non vide.

    Ci-dessous le code dans le onsubmit :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <form id="texteInscription" method="post" action="envoi-informations.php" name="inscription" onsubmit="return (<?php if(!empty($_POST['emailDirecteur'])){echo "VerifMailDirecteur()";}?>);">

    D'abord je ne suis pas sûre que la syntaxe de ce que j'ai écrit soit correcte mais de toutes façons je vois dans les nombreux posts que j'ai lus que ça n'a pas de sens de mélanger du PHP et du JavaScript.
    Est-ce que vous me confirmez cela ?
    Si oui comment puis-je insérer ma condition de champ non vide pour le lancement de la fonction ? Dans la fonction elle-même ?

    Ci-dessous le code de la fonction appelée :
    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
    function VerifMailDirecteur()
    		{
    		a = document.inscription.emailDirecteur.value;
    		valide1 = false;
     
    		for(var j=1;j<(a.length);j++){
    			if(a.charAt(j)=='@'){
    				if(j<(a.length-4)){
    					for(var k=j;k<(a.length-2);k++){
    						if(a.charAt(k)=='.') valide1=true;
    					}
    				}
    			}
    		}
    		if(valide1==false) alert("Le format de l'email du Directeur de la concession est incorrect. Veuillez saisir une adresse email valide.");
    		return valide1;
    		}


    Merci par avance pour votre aide (et votre indulgence...)

    E. Nigma

  2. #2
    Membre confirmé
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Points : 545
    Points
    545
    Par défaut
    Tu testes la variable $_POST avant l'envoi du formulaire dans la fonction JS onsubmit ça peut pas marcher

  3. #3
    Membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Avril 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2014
    Messages : 92
    Points : 53
    Points
    53
    Par défaut
    Merci pour ta réponse Rpass.
    Oui c'est logique en effet.

    Je continue de chercher mais je tourne en rond, et le JS c'est vraiment un terrain inconnu.

    J'en conclue donc que je dois tester si mon champ est vide dans la fonction elle-même...
    J'ai testé ça mais ça ne fonctionne pas non plus...
    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
    function VerifMailDirecteur()
    		{
    		if(document.getElementById("emailDirecteur").value!='';)
    			{
    			a = document.inscription.emailDirecteur.value;
    			valide1 = false;
     
    			for(var j=1;j<(a.length);j++){
    				if(a.charAt(j)=='@'){
    					if(j<(a.length-4)){
    						for(var k=j;k<(a.length-2);k++){
    							if(a.charAt(k)=='.') valide1=true;
    						}
    					}
    				}
    			}
    			if(valide1==false) alert("Le format de l'email du Directeur de la concession est incorrect. Veuillez saisir une adresse email valide.");
    			return valide1;
    			}
    		}
    Merci pour ton aide

  4. #4
    Membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Avril 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2014
    Messages : 92
    Points : 53
    Points
    53
    Par défaut
    Mon but étant de lancer la vérification de validité de l'email uniquement si le champ est renseigné.
    S'il est vide ce n'est pas la peine.

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 961
    Points : 44 133
    Points
    44 133
    Par défaut
    Bonjour,
    c'est pratiquement ce que tu fais, le schéma est souvent le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function VerifMailDirecteur() {
      var adresse = document.getElementById('emailDirecteur').value;
      if (adresse !== '') {
        // ici tes tests
      } 
      else {
        return false;
      }
    }
    Nota: tu pourras noter qu'il n'y a pas de ; dans la condition contrairement à ce que l'on trouve dans ton code !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(document.getElementById("emailDirecteur").value!='';)

  6. #6
    Membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Avril 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2014
    Messages : 92
    Points : 53
    Points
    53
    Par défaut
    Je me disais bien que j'allais finir par voir une "tête" connue sur mon post
    Hello NoSmoking, tu m'as déjà enlevé plusieurs épines du pied sur des problèmes passés !

    Merci pour ton aide, j'ai modifié le code suivant tes conseils (en enlevant le else car si le champ est vide du coup je ne peux pas valider le form et ce n'est pas le but puisque mes champs ne sont pas obligatoires).

    Mais j'ai un autre problème: j'appelle en fait dans ma balise form sur le onsubmit 4 fonctions de contrôle de validité.
    Et je rappelle donc que mon contrôle se déclenche sur le contenu du champ uniquement si celui-ci est non vide.
    En faisant pas mal de tests je me suis aperçue que si mon champ id=emailDirecteur est vide, le contrôle ne se fait pas en effet donc parfait mais aucun des contrôles suivants ne se fait (sur mes champs id=emailParticipant, id=portableDirecteur et id=portableParticipant).
    En revanche si le champ concerné par la 1ère fonction appelée dans le onsubmit (id=emailDirecteur ) est renseigné (correctement ou non), le contrôle se fait et là ma 2e fonction va bien se lancer sur le contrôle du champ id=emailParticipant... Et ainsi de suite...
    Donc en gros dès que j'ai un champ vide, les contrôles suivant dans l'ordre d'appel de mes fonctions ne se font plus.


    J'espère que je suis claire.

    Ci-dessous les fonctions :

    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
    function VerifMailDirecteur()
    		{
    			var adresse = document.getElementById("emailDirecteur").value;
    			if (adresse !== '')
    			{
    				a = document.inscription.emailDirecteur.value;
    				valide1 = false;
     
    				for(var j=1;j<(a.length);j++){
    					if(a.charAt(j)=='@'){
    						if(j<(a.length-4)){
    							for(var k=j;k<(a.length-2);k++){
    								if(a.charAt(k)=='.') valide1=true;
    							}
    						}
    					}
    				}
    				if(valide1==false) alert("Le format de l'email du Directeur de la concession est incorrect. Veuillez saisir une adresse email valide.");
    				return valide1;
    			}
    		}
     
     
    		function VerifMailParticipant()
    		{
    			var adresse = document.getElementById("emailParticipant").value;
    			if (adresse !== '')
    			{
    				a = document.inscription.emailParticipant.value;
    				valide1 = false;
     
    				for(var j=1;j<(a.length);j++){
    					if(a.charAt(j)=='@'){
    						if(j<(a.length-4)){
    							for(var k=j;k<(a.length-2);k++){
    								if(a.charAt(k)=='.') valide1=true;
    							}
    						}
    					}
    				}
    				if(valide1==false) alert("Le format de l'email de la personne inscrite au challenge est incorrect. Veuillez saisir une adresse email valide.");
    				return valide1;
    			}	
    		}
     
     
    		function VerifPortableDirecteur()
    		{
    			var adresse = document.getElementById("portableDirecteur").value;
    			if (adresse !== '')
    			{
    				 if (document.inscription.portableDirecteur.value.length < 10)
    				{  
    					 alert ("Le format du portable du Directeur de la concession est incorrect. Veuillez saisir les 10 chiffres du numéro de portable au format suivant 0000000000, sans espace.");
    					  return false; 
    				}
     
    				return true;
    			}	
    		}
     
     
    		function VerifPortableParticipant()
    		{
    			var adresse = document.getElementById("portableParticipant").value;
    			if (adresse !== '')
    			{
    				 if (document.inscription.portableParticipant.value.length < 10)
    				{  
    					 alert ("Le format du portable de la personne inscrite au challenge est incorrect. Veuillez saisir les 10 chiffres du numéro de portable au format suivant 0000000000, sans espace.");
    					  return false; 
    				}
     
    				return true;
    			}	
    		}
    Et ma balise form :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form id="texteInscription" method="post" action="envoi-informations.php" name="inscription" onsubmit="return (VerifMailDirecteur() && VerifMailParticipant() && VerifPortableDirecteur() && VerifPortableParticipant());">
    Est-ce que tu vois d'où peut venir ce problème...??
    Merci pour ton aide NoSmoking, ou votre aide si d'autres yeux se penchent sur mon casse-tête.

  7. #7
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Tu devrais initialiser valide1 à false en tout début de tes fonctions et mette le return en dehors de l'if.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  8. #8
    Membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Avril 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2014
    Messages : 92
    Points : 53
    Points
    53
    Par défaut
    Hello badaze,

    Merci pour ta réponse.
    Peux-tu m'expliquer pourquoi il faut initialiser valide1 à false en tout début des fonctions et mette le return en dehors de l'if ?

    N'ayant pas moyen de tester pour l'instant, est-ce qu'au moins dans l'écriture du code ce qui suit te semble plus correct ?

    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
    function VerifMailDirecteur()
    		{
    			valide1 = false;
    			var adresse = document.getElementById("emailDirecteur").value;
    			if (adresse !== '')
    			{
    				a = document.inscription.emailDirecteur.value;
     
    				for(var j=1;j<(a.length);j++){
    					if(a.charAt(j)=='@'){
    						if(j<(a.length-4)){
    							for(var k=j;k<(a.length-2);k++){
    								if(a.charAt(k)=='.') valide1=true;
    							}
    						}
    					}
    				}
    				if(valide1==false) alert("Le format de l'email du Directeur de la concession est incorrect. Veuillez saisir une adresse email valide.");
    			}
    			return valide1;
    		}

    N'y a t-il rien à ton sens à modifier dans le code des fonctions VerifPortableDirecteur() et VerifPortableParticipant() ?

    Merci x 100

  9. #9
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Dans ton code précédent tu pouvais sortir des fonctions sans return (donc encore moins avec true ou false).
    Une bonne pratique est d'initialiser dès le début la variable en sortie avec sa valeur par défaut.
    De cette manière tu es sûre que la fonction retournera une valeur attendue.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  10. #10
    Membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Avril 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2014
    Messages : 92
    Points : 53
    Points
    53
    Par défaut
    @badaze : je me rends compte aujourd'hui que je ne t'ai jamais répondu à ton dernier message.
    Un grand merci alors (très en retard) pour ton aide ;-)
    Bonne journée

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

Discussions similaires

  1. Coincé sur condition dans requête
    Par WibiMaster dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/02/2011, 08h31
  2. Appel fonction d'une classe dans une autre classe
    Par Snake-Eyes dans le forum C++
    Réponses: 3
    Dernier message: 05/05/2010, 16h46
  3. appel fonction du SGBD oracle dans select
    Par gg2vig dans le forum Cognos
    Réponses: 0
    Dernier message: 23/09/2008, 15h37
  4. Réponses: 2
    Dernier message: 09/11/2007, 10h18
  5. Réponses: 3
    Dernier message: 18/06/2007, 16h10

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