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 :

Affichage d'erreur dans la page html


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 57
    Points : 31
    Points
    31
    Par défaut Affichage d'erreur dans la page html
    Bonjour,
    J'ai un formulaire html avec une vérification javascript et php pour savoir si
    les champs obligatoire sont bien remplis.

    Je voulais savoir si en javascript il était possible d'afficher les erreurs à côté du champ concerné plutôt que dans une alert et si oui comment faire ?
    Sinon quel langage utilisé, j'espère ne pas à avoir refaire tout mon formulaire... en java ou je ne sais quoi...
    Si ce n'est pas possible en javascript est ce que je pourrais avoir un exemple pour avoir tout les message d'erreur dans une même alert ?

    du genre : Veuillez entrer votre : NOM
    MAIL
    TEL etc...


    voila un exemple de mon javascript :

    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
    var verif = RegExp("^([a-zA-Z0-9_-])+([.]?[a-zA-Z0-9_-]{1,})*@([a-zA-Z0-9-_]{2,}[.])+[a-zA-Z]{2,3}$");
    function verification() {
       if(document.formulaire.nom.value == "") {
          alert("var verif = RegExp("^([a-zA-Z0-9_-])+([.]?[a-zA-Z0-9_-]{1,})*@([a-zA-Z0-9-_]{2,}[.])+[a-zA-Z]{2,3}$");
    function verification() {
       if(document.formulaire.nom.value == "") {
          alert("Veuillez entrer votre NOM svp");
          document.formulaire.nom.focus();
          return false;
       }
          if(document.formulaire.mail.value == "") {
          alert("Veuillez entrer votre MAIL svp");
          document.formulaire.mail.focus();
          return false;
    	  }
     	if (verif.exec(document.formulaire.mail.value) == null)
     	{
    	alert("Votre email est incorrecte");
     	return false;
     } ");
          document.formulaire.nom.focus();
          return false;
       }
          if(document.formulaire.mail.value == "") {
          alert("Veuillez entrer votre MAIL svp");
          document.formulaire.mail.focus();
          return false;
    	  }
     	if (verif.exec(document.formulaire.mail.value) == null)
     	{
    	alert("Votre email est incorrecte");
     	return false;
     }
    etc....



    Merci.

  2. #2
    Membre régulier Avatar de ninatity
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2010
    Messages : 64
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par Irokoi Voir le message
    Bonjour,
    J'ai un formulaire html avec une vérification javascript et php pour savoir si
    les champs obligatoire sont bien remplis.

    Je voulais savoir si en javascript il était possible d'afficher les erreurs à côté du champ concerné plutôt que dans une alert et si oui comment faire ?
    Oui c'est faisable en javascript. Utilises Ajax pour cela. Regardes des tutos et des exemples. Il y en a pleins.
    Exemple http://dmouronval.developpez.com/tut...-requete-ajax/

    Bonne continuation

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 075
    Points : 44 679
    Points
    44 679
    Par défaut
    Bien le bonjour à vous
    Citation Envoyé par Irokoi
    Je voulais savoir si en javascript il était possible d'afficher les erreurs à côté du champ concerné plutôt que dans une alert et si oui comment faire ?
    affichage/masquage de div ou autre span en jouant sur la propriété style.display des éléments.

    L'utilisation d'AJAX ne m'apparaît pas évidente sur ce coup.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Non effectivement l'utilisation d'AJAX ne se justifierait que s'il fallait par exemple contrôler qu'un nom saisi correspond à un nom existant dans une bdd...

    J'ai donné un exemple de contrôle de formulaire en javascript dans ce topic

    A la place du alert qui est là pour le principe tu peux enregistrer les résultats du contrôle dans un tableau que tu liste ensuite (en javascript) dans un div html prévu à cet effet. Toutes les erreurs seront repportées d'un coup.
    Ou tu peux aussi faire comme dit NoSmoking, faire afficher des <span> en fonction du résultat de la vérification.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Merci vous me rassurez car je n'ai pas envie de me prendre la tête à rajouter du ajax.
    Je vais voir ce que je peux faire avec les div ou span.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Alors voila ce que je viens de faire mais qui évidemment ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function verification() {
    	 if(document.formulaire.adresse.value == "") {
          document.getElementById(erreuradresse).style.visibility = "visible";
          document.formulaire.adresse.focus();
          return false;
       }
    et le html :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <form name="formulaire" method="POST" action="form2.php" onsubmit="return verification();">
     
    <fieldset>
     
    <legend class="legend">Coordonnée du bien</legend>
    <label for="adresse" class="important">*Adresse du bien à vendre </label>
     
    <input name="adresse" id="adresse" size="50" class="error" maxlength="100" type="text"/>
     
    <span id="erreuradresse" style="display: none" >Vous avez oublié l'adresse !</span>

    Si quelqu'un peut m'éclairer ?

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    C'est bien de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById(erreuradresse).style.visibility = "visible";
    mais comme ton span est en display none et que tu ne modifies pas le display, ça ne risque pas de changer grand chose !

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Tout d'abord désoler pour la couleur du code ensuite effectivement j'ai modifier mon erreur et ça marche.

    Maintenant il faut que toutes les erreurs soient affichées d'un seul coup donc que
    le code vérifie tout et renvoi toutes les erreurs pour que ce soit résolu.

    tout de même voila mon code modifier si quelqu'un passe par la :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <span id="erreuradresse" style="visibility:hidden" > Vous avez fait une erreur !</span>

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    J'imagine que pour tout vérifier il faut faire une boucle et renvoyer les spans de tout les élément qui ne sont pas remplie, problème je ne sais pas faire de boucle est-ce que quelqu'un peut m'orienter sur la boucle ici à faire ?

    ABCIWEB je regarde ton code mais ne sait pas comment l'adapter

    Code javascript : 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
     
    function Controle_champ(bloc,type_champ)
    {
        // Sélection du bloc contenant les champs à contrôler
    	var bloc = document.getElementById(bloc);
     
     
    	if(bloc)
    		{
    			//Initialisation d'une variable pour contenir un tableau.
    			var tab = new Array();
     
    			// Cherche les balises "type_champ" inlues dans le bloc ("formulaire1" ou "form_text" dans l'exemple) 
    			tab = bloc.getElementsByTagName(type_champ);
     
    	   	   	var nb_tableau = tab.length;
     
    			// Liste les éléments du tableau
    			for (i=0; i < nb_tableau; i++)        
    				{
    					alert(tab[i].value);				
    				}
     
    		}
    }

  10. #10
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 075
    Points : 44 679
    Points
    44 679
    Par défaut
    iln'est pas forcément besoin de boucle, dans un premier temps, pour tous vérifier et afficher les message d'erreur, exemple de fonction simplifié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
    18
    function verification() {
      // flag pour le retour
      var bErreur = false;
      // realisation du test
      if( document.formulaire.nom.value == "") {
        // affichage message erreur    
        document.getElementById('erreur_nom').style.display = "inline";
        // signal erreur
        bErreur = true;
      }
      if( document.formulaire.mail.value == "") {
        document.getElementById('erreur_mail').style.display = "inline";
        document.formulaire.mail.focus();
        bErreur = true;
      }
      // retourne le statut
      return( bErreur);
    }
    il restera d'autres petits problèmes à régler, mais chaque chose en son temps...

  11. #11
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Mon code c'est un exemple pour sélectionner des champs dans un bloc sans avoir à les nommer. C'est donc surtout pratique si tu peux regrouper les champs à contrôler.

    En l'adaptant avec un système d'alerte qui fait afficher un span derrière les champs vides, ça pourrait donner quelque chose comme ça :


    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans nom</title>
    <script type="text/javascript">
    <!--
    function Controle_champs(bloc,type_champ)
    {
     
    	function trim (myString)
    		{//supprime les espaces vides en début et en fin de chaine
    			return myString.replace(/^\s+/g,'').replace(/\s+$/g,'')
    		}
     
     
    	var bloc_controle;
     
    	 // Sélection du bloc contenant les champs à contrôler
    	if(bloc_controle = document.getElementById(bloc))
    		{
    			//Initialisation d'une variable pour contenir un tableau.
    			var tab = new Array();
     
    			// Cherche les balises "type_champ" inlues dans le bloc ("formulaire1" ou "form_text" dans l'exemple) 
    			tab = bloc_controle.getElementsByTagName(type_champ);
     
    	   	   	var nb_tableau = tab.length;
     
    			var etat = true;
    			var span;
     
    			// Liste les éléments du tableau
    			for (i=0; i < nb_tableau; i++)        
    				{
    					var id_span = tab[i].name+'_controle';//id du span = nom du champ concaténé à _controle
     
    					// Si le span associé existe on fait le contrôle
    					if(span = document.getElementById(id_span))	
    					{	
    						if(trim(tab[i].value) == "") 
    							{
    								span.style.visibility = 'visible';
    								etat = false;
    							}
    							else
    							{
    								span.style.visibility = 'hidden';
    							}
    					}			
    				}
     
    			if(etat == true) 
    			return true; 
    			else 
    			return false;									  
    		}
    }
     
    function Controle_form ()
    {
    	var etat = true;
     
    	// ici tu défini les bloc à contrôler avec le type de champs associés en les passant en paramètres à la fonction Controle_champs
     
    	if (!Controle_champs('form_input','input')) etat = false;
    	if (!Controle_champs('form_text','textarea')) etat = false; 
     
    	return etat;
    }
    -->
    </script>
    <style type="text/css">
    <!--
    #form_input span, #form_text span{
    visibility:hidden;
    }
    -->
    </style>
    </head>
     
    <body>
     
    <div>
    	<form action = "#" method = "post" id = "form1"  onsubmit = "return Controle_form()" >
    		<div>
    				<p id = "form_input">
     
    					 <input type="text" name = "nom" value = ""  /><span id = "nom_controle">Le champ nom doit être rempli</span><br />
     
    					 <input type="text" name = "prenom" value = ""  /><span id = "prenom_controle">Le champ prénom doit être rempli</span><br />
    					 <input type="text" name = "mail" value = ""  /><span id = "mail_controle">Le champ mail doit être rempli</span><br />
     
    					 <input type="text" name = "tel" value = ""  />ce champ n'est pas contrôlé car il n'a pas d'élément avec un id = "nom du champ_controle"<br />
     
    				</p>
     
    				<p id = "form_text">
    					<textarea name="texte" ></textarea><span id = "texte_controle">Le champ de texte doit être rempli</span><br />
    				</p>		 
     
    				<input name = "envoyer" value = "Envoyer" type = "submit"/>
     
    		</div>
    	</form>
    </div>
    </body>
    </html>
    Le principe du jeu pour le codage html est d'identifier le span d'alerte avec un id constitué du nom du champ concaténé à l'expression '_controle'. Si cet id n'existe pas le contrôle ne se fait pas.

    Pour le javascript c'est dans la fonction "Controle_form" que tu mets les différents blocs à contrôler à l'aide de la fonction "Controle_champs"

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Alors j'ai essayé de faire un mixe entre les différents codes
    mais ici seul le code d'ABCIWEB fonctionne,c'est à dire que les champs non remplis affiche l'erreur mais
    par exemple ici le "verifTel" et "if(document.formulaire.pass.value.length >= 5) etat = false;" ne fonctionnent pas
    Code javascript : 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
     
    var verifTel = /^0[1-9]([_.\-\s]*[0-9]{2}){4}$/;
    var verif = RegExp("^([a-zA-Z0-9_-])+([.]?[a-zA-Z0-9_-]{1,})*@([a-zA-Z0-9-_]{2,}[.])+[a-zA-Z]{2,3}$");
    function Controle_champs(bloc,type_champ)
    {
     
    	function trim (myString)
    		{//supprime les espaces vides en début et en fin de chaine
    			return myString.replace(/^\s+/g,'').replace(/\s+$/g,'')
    		}
     
     
    	var bloc_controle;
     
    	 // Sélection du bloc contenant les champs à contrôler
    	if(bloc_controle = document.getElementById(bloc))
    		{
    			//Initialisation d'une variable pour contenir un tableau.
    			var tab = new Array();
     
    			// Cherche les balises "type_champ" inlues dans le bloc ("formulaire1" ou "form_text" dans l'exemple) 
    			tab = bloc_controle.getElementsByTagName(type_champ);
     
    	   	   	var nb_tableau = tab.length;
     
    			var etat = true;
    			var span;
     
    			// Liste les éléments du tableau
    			for (i=0; i < nb_tableau; i++)        
    				{
    					var id_span = tab[i].name+'_controle';//id du span = nom du champ concaténé à _controle
     
    					// Si le span associé existe on fait le contrôle
    					if(span = document.getElementById(id_span))	
    					{	
    						if(trim(tab[i].value) == "") 
    							{
    								span.style.visibility = 'visible';
    								etat = false;
    							}
    							else
    							{
    								span.style.visibility = 'hidden';
    							}
    					}			
    				}
     
    			if(etat == true) 
    			return true; 
    			else 
    			return false;									  
    		}
    }
     
    function Controle_form ()
    {
    	var etat = true;
     
    	// ici tu défini les bloc à contrôler avec le type de champs associés en les passant en paramètres à la fonction Controle_champs
    	if(document.formulaire.pass.value.length >= 5) etat = false;
    	if (!Controle_champs('form_input','input')) etat = false;
    	if (!Controle_champs('form_text','textarea')) etat = false; 
    	if (!verifTel(document.formulaire.numero.value))etat = false; 
     
     
    	return etat;
    }
    Code html : 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
     
    <style type="text/css">
    <!--
    #form_input span, #form_text span{
    visibility:hidden;
    }
    -->
    </style>
    </head>
     
    <body>
    <div class="form-container">
    Remplissez les champs ci-dessous pour réaliser votre estimation. <br />
    C'est gratuit et sans engagement !
    <form name="formulaire" method="POST" action="verifenregistrement.php" onsubmit="return Controle_form();">
    <fieldset>
    <div>
    <input name="MR" value="Mr" checked="checked" type="radio" />Mr
    <input name="MR" value="Mme" type="radio" />Mme
    </div>
    <div id = "form_input">
    <label for="nom"><font color="#FF0000"> *</font>Votre nom :</label><p>
    <input id="nom" name="nom" size="50" maxlength="100" type="text" class="error" value="" />
    <span id = "nom_controle" class="important">&nbsp;Le champ NOM doit être rempli</span></p>
    <p>&nbsp;</p>
    <label for="prenom"><font color="#FF0000"> *</font>Votre prénom :</label>
    <p>
    <input id="prenom" name="prenom" size="50" maxlength="100" type="text" class="error" value="" />
    <span id = "prenom_controle" class="important">&nbsp;Le champ PRENOM doit être rempli</span></p>
    <p>&nbsp;</p>
     
    <label for="mail"><font color="#FF0000"> *</font>Votre adresse mail :</label>
    <p>
    <input name="mail" id="mail" size="50" maxlength="100" type="text" class="error" value="" />
    <span id = "mail_controle" class="important">&nbsp;Le champ MAIL doit être rempli</span></p>
    <p>&nbsp;</p>
     
    <label for="numero"><font color="#FF0000"> *</font>Votre numéro de
    téléphone :</label>
    <p>
    <input name="numero" id="numero" size="15" maxlength="15" type="text" class="error" value=""/>
    <span id = "numero_controle" class="important">&nbsp;Le champ TELEPHONE doit être rempli</span></p>
    <p>&nbsp;</p>
     
    <label for="pass"><font color="#FF0000"> *</font>Password :</label>
    <p>
    <input type="password" name="pass" id="pass" value="" class="error" />
    <span id = "pass_controle" class="important">&nbsp;Le champ PASSWORD doit être rempli</span></p>
     
    <p>&nbsp;</p>
    <label for="confirmation"><font color="#FF0000"> *</font>Confirmation password :</label>
    <p>
    <input type="password" name="confirmation" id="confirmation" value="" class="error" />
    <span id = "confirmation_controle" class="important">&nbsp;Le champ CONFIRMATION doit être rempli</span></p>
    </div>
    </fieldset>
    <input type="submit"  value="Enregistrement"/>
    </form>
    </div>
    </body>
    </html>

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Pareil NoSmoking je viens de test ta version mais les span s'affiche
    1/2 seconde ce qui n'est pas très pratique je ne comprends pas pourquoi d'ailleurs

    look

    Code javascript : 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
     
    var bErreur = false;
    function verification() {
      // flag pour le retour
      // realisation du test
      if( document.formulaire.nom.value == "") {
        // affichage message erreur    
        document.getElementById('erreur_nom').style.visibility = "visible";
        // signal erreur
        bErreur = true;
      }
      if( document.formulaire.mail.value == "") {
        document.getElementById('erreur_mail').style.visibility = "visible";
        bErreur = true;
      }
      // retourne le statut
      return(bErreur);
    }

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <label for="nom"><font color="#FF0000"> *</font>Votre nom :</label><p>
    <input id="nom" name="nom" size="50" maxlength="100" type="text" class="error" value="" />
    <span id = "erreur_nom"  style="visibility:hidden" class="important">&nbsp;Le champ NOM doit être rempli</span>

  14. #14
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 075
    Points : 44 679
    Points
    44 679
    Par défaut
    grosse ERREUR de ma part
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      // retourne le statut
      return(!bErreur); // not Erreur

  15. #15
    skandhal
    Invité(e)
    Par défaut
    Bon alors pour faire cela en JS de façon simple et efficace sans se prendre la tête avec des jquerry ou autre!

    Code JavaScript : 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
     
    function check_form_connexion()
    {
    	var login = document.form_connexion.f_login.value;
    	var password = document.form_connexion.f_password.value;
     
    	/* Les champs sont renseignes */	
    	if (login != "" && password != "" ) return(true);
    	else // SINON EDITION DU MESSAGE D'ERREUR
    	{
    		if (login == "") /* Avertissement sur login */
    		{
    			document.form_connexion.f_login.style.backgroundColor = "#DC143C";
    			document.getElementById("hlogin").className= "visible"; 
    		}
    		else document.getElementById("hlogin").className= "hidden";
    		if (password == "") /* Avertissement sur password */
    		{
    			document.form_connexion.f_password.style.backgroundColor = "#DC143C";
    			document.getElementById("hpassword").className= "visible";
    		}
    		else document.getElementById("hpassword").className= "hidden";
    		return(false);
    	}
    } // End of: function check_form_connexion()


    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <h2>Connectez-vous</h2>
    <form name="form_connexion" method="post" action="./connexion.php">
    	<table>
    		<tr><td>Login:</td><td><input id="login" type="text" name="f_login" maxlength="64" size="35"/></td><td id="hlogin"class="hidden">Veuillez entrer votre login</td></tr>
    		<tr><td>Mot de passe:</td><td><input id="password" type="password" name="f_password" maxlength="64" size="35"/></td><td id="hpassword"class="hidden">Veuillez entrer votre mot de passe</td></tr>
    		<tr><td></td><td><input id="button" type="submit" value="Se connecter" onclick="return check_form_connexion();" /></td></tr>
    	</table>
    </form>'

    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    /*****************************************************************************
     * Afficher/Cacher
     */
    	.visible {
    		display: inline;
    	}
     
    	.hidden {
    		display: none;
    	}

    J'utilise cela depuis quelques mois maintenant et ça marche nickel.

    En gros tu remplis ton formulaire. Dans cet exemple, on attend un login et un password.

    Lorque l'utilisateur va cliquer sur le bouton on va appeler la fonction check_form_connexion()

    Cette fonction vérifié que les champs login et password ne sont pas vide. Si un des 2 champs (ou les 2) sont vides on changera le nom de la propriété class (CSS) du message d'erreur. Dans ce cas là, l'action n'est pas réalisée car la fonction JS renvoie false. Et le(s) message(s) d'erreur est(sont) affiché(s).

    Dans le cas contraire, aucun message d'erreur n'apparait et comme la fonction JS renvoie true, l'action est réalisée.

    class="hidden" = caché, le message d'erreur n'est pas visible (par défaut).
    class="visible" = visible, le message d'erreur est visible.


    Simple comme un Hello World, ou presque.

    Voilà, si y a d'autres questions après 18h30 faudra attendre demain matin (pas internet à la maison)

  16. #16
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Concernant mon code tu peux utiliser la fonction Controle_champs pour vérifier des champs vides, pour le reste il vaut mieux te créer des fonctions dédiées.
    Je viens de créer une fonction Verif_Champ qui vérifie des regex, pour le mail et le téléphone (j'ai utilisé les regex que j'ai trouvé dans ton code sans vérifier s'ils étaient ok)

    Donc en reprenant le même principe cela donne :

    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
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans nom</title>
    <script type="text/javascript">
    <!--
    function Trim (myString)
    {//supprime les espaces vides en début et en fin de chaine
        return myString.replace(/^\s+/g,'').replace(/\s+$/g,'')
    }
     
     
    function Verif_Champ(id_input, regex)
    {
        var champ;
        var etat = true;
     
        if (champ = document.getElementById(id_input))
            {
                var id_span = champ.name+'_verif';//id du span = nom du champ concaténé à _verif
                var span;    
     
                // Si le span associé existe on fait le contrôle
                if(span = document.getElementById(id_span))    
                    {
                        // Test le regex ou si le champ est vide
                        if ((regex.test(champ.value)) || Trim (champ.value) == '') 
                            {
                                span.style.display = 'none';
                            }
                            else 
                            {
                                span.style.display = 'inline';
                                etat = false;
                            }
                    }
            }
        return etat; 
    }
     
     
     
    function Controle_champs(bloc,type_champ)
    {        
     
        var bloc_controle;
     
         // Sélection du bloc contenant les champs à contrôler
        if(bloc_controle = document.getElementById(bloc))
            {
                //Initialisation d'une variable pour contenir un tableau.
                var tab = new Array();
     
                // Cherche les balises "type_champ" inlues dans le bloc ("formulaire1" ou "form_text" dans l'exemple) 
                tab = bloc_controle.getElementsByTagName(type_champ);
     
                      var nb_tableau = tab.length;
     
                var etat = true;
                var span;
     
                // Liste les éléments du tableau
                for (i=0; i < nb_tableau; i++)        
                    {
                        var id_span = tab[i].name+'_controle';//id du span = nom du champ concaténé à _controle
     
                        // Si le span associé existe on fait le contrôle
                        if(span = document.getElementById(id_span))    
                        {    
                            if(Trim(tab[i].value) == "") 
                                {
                                    span.style.display = 'inline';
                                    etat = false;
                                }
                                else
                                {
                                    span.style.display = 'none';
                                }
                        }            
                    }
     
                return etat;                                       
            }
    }
     
     
     
    function Controle_form ()
    {
        var etat = true;
     
        // ici tu défini les bloc à contrôler (champs qui ne doivent pas être vides) avec le type de champs associés en les passant en paramètres à la fonction Controle_champs
        if (!Controle_champs('form_input','input')) etat = false;
     
        // ces contrôles spécifiques doivent être placés après la fonction Controle_champs puisqu'ils vérifient la qualité du champ. On passe à la fonction Verif_Champ l'id du champ et le regex de contrôle
     
        var regex_tel = /^0[1-9]([_.\-\s]*[0-9]{2}){4}$/;
        if (!Verif_Champ('numero',regex_tel)) etat = false;
     
        var regex_mail = /^([a-zA-Z0-9_-])+([.]?[a-zA-Z0-9_-]{1,})*@([a-zA-Z0-9-_]{2,}[.])+[a-zA-Z]{2,3}$/;
        if (!Verif_Champ('mail',regex_mail)) etat = false;
     
        return etat;
    }
    -->
    </script>
    <style type="text/css">
    <!--
    #form_input span {
    display:none;
    }
    -->
    </style>
    </head>
     
    <body>
    <div class="form-container">
    Remplissez les champs ci-dessous pour réaliser votre estimation. <br />
    C'est gratuit et sans engagement !
    <form name="formulaire" method="POST" action="verifenregistrement.php" onsubmit="return Controle_form();">
    <fieldset>
    <div>
    <input name="MR" value="Mr" checked="checked" type="radio" />Mr
    <input name="MR" value="Mme" type="radio" />Mme
    </div>
    <div id = "form_input">
    <label for="nom"><font color="#FF0000"> *</font>Votre nom :</label><p>
    <input id="nom" name="nom" size="50" maxlength="100" type="text" class="error" value="" />
    <span id = "nom_controle" class="important">&nbsp;Le champ NOM doit être rempli</span></p>
    <p>&nbsp;</p>
    <label for="prenom"><font color="#FF0000"> *</font>Votre prénom :</label>
    <p>
    <input id="prenom" name="prenom" size="50" maxlength="100" type="text" class="error" value="" />
    <span id = "prenom_controle" class="important">&nbsp;Le champ PRENOM doit être rempli</span></p>
    <p>&nbsp;</p>
     
    <label for="mail"><font color="#FF0000"> *</font>Votre adresse mail :</label>
    <p>
    <input name="mail" id="mail" size="50" maxlength="100" type="text" class="error" value="" />
    <span id = "mail_controle" class="important">&nbsp;Le champ MAIL doit être rempli</span><span id = "mail_verif" class="important">&nbsp;Le champ MAIL est invalide</span></p>
    <p>&nbsp;</p>
     
    <label for="numero"><font color="#FF0000"> *</font>Votre numéro de
    téléphone :</label>
    <p>
    <input name="numero" id="numero" size="15" maxlength="15" type="text" class="error" value="0473266334"/>
    <span id = "numero_controle" class="important">&nbsp;Le champ TELEPHONE doit être rempli</span><span id = "numero_verif" class="important">&nbsp;Le champ TELEPHONE est invalide</span></p>
    <p>&nbsp;</p>
     
    <label for="pass"><font color="#FF0000"> *</font>Password :</label>
    <p>
    <input type="password" name="pass" id="pass" value="" class="error" />
    <span id = "pass_controle" class="important">&nbsp;Le champ PASSWORD doit être rempli</span></p>
     
    <p>&nbsp;</p>
    <label for="confirmation"><font color="#FF0000"> *</font>Confirmation password :</label>
    <p>
    <input type="password" name="confirmation" id="confirmation" value="" class="error" />
    <span id = "confirmation_controle" class="important">&nbsp;Le champ CONFIRMATION doit être rempli</span></p>
    </div>
    </fieldset>
    <input type="submit"  value="Enregistrement"/>
    </form>
    </div>
    </body>
    </html>

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Salut tout le monde, je fais des vérification, je n'ai pas abandonnée le poste,
    j'essaie d'ajouter une vérification bouton radio je vous tiens au courant.
    En tout cas pour le moment la méthode de ABCIWEB à l'air de fonctionner

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Alors voila la vérification du type texte marche, cependant en ajoutant une vérification de bouton radio ça ne marche pas ainsi que savoir la différence entre les champs password et confirmation
    voici ce que j'ai fait :
    Code javascript : 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
     
    function Trim (myString)
    {//supprime les espaces vides en début et en fin de chaine
        return myString.replace(/^\s+/g,'').replace(/\s+$/g,'')
    }
     
     
    function Verif_Champ(id_input, regex)
    {
        var champ;
        var etat = true;
     
        if (champ = document.getElementById(id_input))
            {
                var id_span = champ.name+'_verif';//id du span = nom du champ concaténé à _verif
                var span;    
     
                // Si le span associé existe on fait le contrôle
                if(span = document.getElementById(id_span))    
                    {
                        // Test le regex ou si le champ est vide
                        if ((regex.test(champ.value)) || Trim (champ.value) == '') 
                            {
                                span.style.display = 'none';
                            }
                            else 
                            {
                                span.style.display = 'inline';
                                etat = false;
                            }
                    }
            }
        return etat; 
    }
     
     
     
    function Controle_champs(bloc,type_champ)
    {        
     
        var bloc_controle;
     
         // Sélection du bloc contenant les champs à contrôler
        if(bloc_controle = document.getElementById(bloc))
            {
                //Initialisation d'une variable pour contenir un tableau.
                var tab = new Array();
     
                // Cherche les balises "type_champ" inlues dans le bloc ("formulaire1" ou "form_text" dans l'exemple) 
                tab = bloc_controle.getElementsByTagName(type_champ);
     
                      var nb_tableau = tab.length;
     
                var etat = true;
                var span;
     
                // Liste les éléments du tableau
     
                for (i=0; i < nb_tableau; i++)        
                    {
                        var id_span = tab[i].name+'_controle';//id du span = nom du champ concaténé à _controle
     
                        // Si le span associé existe on fait le contrôle
                        if(span = document.getElementById(id_span))    
                        {    
                            if(Trim(tab[i].value) == "") 
                                {
                                    span.style.display = 'inline';
                                    etat = false;
                                }
                                else
                                {
                                    span.style.display = 'none';
                                }
                        }            
                    }
     
                return etat;                                       
            }
    }
     
     function Controle_form ()
    {
        var etat = false;
    	var radio_choice = true;
     
        // ici tu défini les bloc à contrôler (champs qui ne doivent pas être vides) avec le type de champs associés en les passant en paramètres à la fonction Controle_champs
        if (!Controle_champs('form_input','input')) etat = false;
        if(!Controle_champ('MR',radio_choice))etat =false;
        // ces contrôles spécifiques doivent être placés après la fonction Controle_champs puisqu'ils vérifient la qualité du champ. On passe à la fonction Verif_Champ l'id du champ et le regex de contrôle
    	var regex_nom = /^([a-zA-Z\-]{2,})$/;
    	if (!Verif_Champ('nom',regex_nom)) etat = false; 
     
     
    	if (!Verif_Champ('prenom',regex_nom)) etat = false; 
     
        var regex_tel = /^([_.\-\s]*[0-9]{2,}){4,}$/;
        if (!Verif_Champ('numero',regex_tel)) etat = false;
     
        var regex_mail = /^([a-zA-Z0-9_-])+([.]?[a-zA-Z0-9_-]{1,})*@([a-zA-Z0-9-_]{2,}[.])+[a-zA-Z]{2,3}$/;
        if (!Verif_Champ('mail',regex_mail)) etat = false;
     
    	var regex_pass = /^([a-zA-Z0-9]{5,})$/;
        if (!Verif_Champ('pass',regex_pass)) etat = false;
     
     
        return etat;
    }

    Et le formulaire :
    Code html : 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
     
    <div class="form-container">
    <form name="formulaire" method="POST" action="verifenregistrement.php" onsubmit="return Controle_form();">
    <fieldset><legend class="legend">Si vous êtes déjà enregistré</legend>
    <div id = "form_input">
    <input name="MR" id="mr" value="Mr"  type="radio" />Mr
    <input name="MR" id="mr" value="Mme" type="radio" />Mme
    <input name="MR" id="mr" value="Melle" type="radio" />Melle
    <p>&nbsp;</p>
     
    <label for="nom"><font color="#FF0000">*</font>Votre nom :</label>
    <input id="nom" name="nom" size="50" maxlength="100" type="text" class="error" value="" />
    <p>&nbsp;</p>
    <label for="prenom"><font color="#FF0000">*</font>Votre prénom :</label>
    <input id="prenom" name="prenom" size="50" maxlength="100" type="text" class="error" value="" />
    <p>&nbsp;</p>
    <label for="numero"><font color="#FF0000"> *</font>Votre numéro de
    téléphone :</label>
    <input name="numero" id="numero" size="15" maxlength="15" type="text" class="error" value=""/>
    <p>&nbsp;</p>
     <label for="mail"><font color="#FF0000">*</font>Votre adresse mail :</label>
     
    <input name="mail" id="mail" size="50" maxlength="100" type="text" class="error" value="" />
    <p>&nbsp;</p>
     
    <label for="pass"><font color="#FF0000">*</font>Password :</label>
    <p>
    <input type="password" name="pass" id="pass" value="" size="15" class="error" />
    <p class="errors">(<strong>Note : </strong>Votre password doit être composé au minimum de 5 caractères alphanumeriques)</p>
    </p>
     
    <p>&nbsp;</p>
     
    <label for="confirmation"><font color="#FF0000">*</font>Confirmation password :</label><p>
    <input id="confirmation" name="confirmation" size="15" maxlength="15" type="password" class="error" value="" /><p></p>
     
    <span id = "mr_controle" class="important">&nbsp;Choisissez une appellation</span><br />
    <span id = "nom_controle" class="important">&nbsp;Le champ NOM doit être rempli</span><span id = "nom_verif" class="important">&nbsp;Le champ NOM est invalide</span><br />
    <span id = "prenom_controle" class="important">&nbsp;Le champ PRENOM doit être rempli</span><span id = "prenom_verif" class="important">&nbsp;Le champ PRENOM est invalide</span><br />
    <span id = "mail_controle" class="important">&nbsp;Le champ MAIL doit être rempli</span><br />
    <span id = "numero_controle" class="important">&nbsp;Le champ TELEPHONE doit être rempli</span><span id = "numero_verif" class="important">&nbsp;Le champ TELEPHONE est invalide</span><br />
    <span id = "pass_controle" class="important">&nbsp;Le champ PASSWORD doit être rempli</span>
    <span id = "pass_verif" class="important">&nbsp;Le champ PASSWORD est invalide</span><br />
    <span id = "confirmation_controle" class="important">&nbsp;Le champ CONFIRMATION doit être rempli</span>
    <span id = "confirmation_verif" class="important">&nbsp;Les champs PASSWORD ne sont pas identiques !</span>
    </div>
    <input type="submit"  value="Enregistrement"/>
    </fieldset>
    <noscript>
        <input type="hidden" name="sansJS" value="1">
    </noscript>
    </form>


    J'aimerai pouvoir ajouter la vérification de l'input type radio et aussi verifier que le password et bien = à la confirmation
    je sais faire tout ça séparément mais pareil quand c'est associé
    à des span ça ne marche pas

  19. #19
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Oui mais bon faudrait un peu essayer de comprendre parce que sinon tu ne pourras pas être autonome.

    Si tu suis la logique de mon exemple, pour contrôler les boutons radio, et l'égalité des champs il faut rajouter deux fonctions dédiées :

    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
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans nom</title>
    <script type="text/javascript">
    <!--
    function Trim (myString)
    {//supprime les espaces vides en début et en fin de chaine
    	return myString.replace(/^\s+/g,'').replace(/\s+$/g,'')
    }
     
     
     
    function Verif_valide(id_input, regex)
    {
    	var champ;
    	var etat = true;
     
    	if (champ = document.getElementById(id_input))
    		{
    			var id_span = champ.name+'_valide';//id du span = nom du champ concaténé à _valide
    			var span;	
     
    			// Si le span associé existe on fait le contrôle
    			if(span = document.getElementById(id_span))	
    				{
    					// Test le regex ou si le champ est vide
    					if ((regex.test(champ.value)) || Trim (champ.value) == '') 
    						{
    							span.style.display = 'none';
    						}
    						else 
    						{
    							span.style.display = 'inline';
    							etat = false;
    						}
    				}
    		}
    	return etat; 
    }
     
     
     
    function Verif_egal(id_input1, id_input2)
    {
    	var champ1;
    	var champ2;
     
    	var etat = true;
     
    	if (champ1 = document.getElementById(id_input1))
    		{
    			var id_span = champ1.name+'_egal';//id du span = nom du champ concaténé à _egal
    			var span;	
     
    			if(champ2 = document.getElementById(id_input2))
    				{
    					// Si le span associé existe on fait le contrôle
    					if(span = document.getElementById(id_span))	
    						{
    							// Test l'egalité des deux champ
    							if (champ1.value == champ2.value  || Trim (champ1.value) == '' || Trim (champ2.value) == '') 
    								{
    									span.style.display = 'none';
    								}
    								else 
    								{
    									span.style.display = 'inline';
    									etat = false;
    								}
    						}
    				}
    		}
    	return etat; 
    }
     
     
     
    function Verif_checked(bloc)
    {
    	var bloc_controle;
     
        var etat = true;
     
    	 // Sélection du bloc contenant les champs à contrôler
    	if(bloc_controle = document.getElementById(bloc))
    		{
    			//Initialisation d'une variable pour contenir un tableau.
    			var tab = new Array();
    			var no_check = new Array();	  
     
    			// Cherche les balises "input" inlues dans le bloc
    			tab = bloc_controle.getElementsByTagName('input');
     
    	   	   	var nb_tableau = tab.length;
     
    			// Liste les éléments du tableau
    			for (i=0; i < nb_tableau; i++)        
    				{
    					var id_span = tab[i].name+'_check';//id du span = nom du champ concaténé à _vide
     
    					// Si le span associé existe on fait le contrôle
    					if(span = document.getElementById(id_span))	
    					{	
    						if(tab[i].checked != true) 
    							{
    							// Si l'élément n'est pas coché on ajoute un élément au tableau des éléments non cochés
    								no_check.push("1");
    							}
    					}			
    				}
     
    			// Si les deux tableaux ont le même nombre d'éléments (aucun élément n'a été coché)
    			if(no_check.length == tab.length) 
    				{
    					span.style.display = 'inline';	
    					etat = false;
    				}
    				else
    				{
    				    // normalement non indispensable (juste pour symétrie avec les autres fonctions) 
    					span.style.display = 'none';	
    				}						  
    		}
     
    	return etat; 	
    }
     
     
     
    function Verif_texte_vide(bloc,type_champ)
    {		
     
    	var bloc_controle;
     	var etat = true;
     
    	 // Sélection du bloc contenant les champs à contrôler
    	if(bloc_controle = document.getElementById(bloc))
    		{
    			//Initialisation d'une variable pour contenir un tableau.
    			var tab = new Array();
     
    			// Cherche les balises "type_champ" inlues dans le bloc ("formulaire1" ou "form_text" dans l'exemple) 
    			tab = bloc_controle.getElementsByTagName(type_champ);
     
    	   	   	var nb_tableau = tab.length;
     
    			var span;
     
    			// Liste les éléments du tableau
    			for (i=0; i < nb_tableau; i++)        
    				{
    					var id_span = tab[i].name+'_vide';//id du span = nom du champ concaténé à _vide
     
    					// Si le span associé existe on fait le contrôle
    					if(span = document.getElementById(id_span))	
    					{	
    						if(Trim(tab[i].value) == "") 
    							{
    								span.style.display = 'inline';
    								etat = false;
    							}
    							else
    							{
    								span.style.display = 'none';
    							}
    					}			
    				}
     
    		}
     
    	return etat; 									  
     
    }
     
     
     
    function Controle_form ()
    {
    	var etat = true;
     
    	// ici tu défini les bloc à contrôler (champs qui ne doivent pas être vides) avec le type de champs associés en les passant en paramètres à la fonction Verif_texte_vide
    	if (!Verif_texte_vide('form_input','input')) etat = false;
     
    	// ces contrôles spécifiques doivent être placés après la fonction Verif_texte_vide puisqu'ils vérifient la qualité du champ. On passe à la fonction Verif_valide l'id du champ et le regex de contrôle
     
    	var regex_tel = /^0[1-9]([_.\-\s]*[0-9]{2}){4}$/;
    	if (!Verif_valide('numero',regex_tel)) etat = false;
     
     
    	var regex_mail = /^([a-zA-Z0-9_-])+([.]?[a-zA-Z0-9_-]{1,})*@([a-zA-Z0-9-_]{2,}[.])+[a-zA-Z]{2,3}$/;
    	if (!Verif_valide('mail',regex_mail)) etat = false;
     
    	// Necessite un id identique au nom du champ
    	if (!Verif_egal('confirmation','pass')) etat = false;
     
     
    	if (!Verif_checked('radio_check')) etat = false;
     
    	return etat;
    }
    -->
    </script>
    <style type="text/css">
    <!--
    #form_input span, #radio_check span {
    display:none;
    }
    -->
    </style>
    </head>
     
    <body>
    <div class="form-container">
    Remplissez les champs ci-dessous pour réaliser votre estimation. <br />
    C'est gratuit et sans engagement !
    <form name="formulaire" method="POST" action="verifenregistrement.php" onsubmit="return Controle_form();">
    <fieldset>
    <div id = "radio_check">
    <input name="MR" value="Mr" type="radio" />Mr
    <input name="MR" value="Mme" type="radio" />Mme
    <span id = "MR_check" class="important">&nbsp;Un bouton doit être choisi</span>
    </div>
    <div id = "form_input">
    <label for="nom"><font color="#FF0000"> *</font>Votre nom :</label><p>
    <input id="nom" name="nom" size="50" maxlength="100" type="text" class="error" value="" />
    <span id = "nom_vide" class="important">&nbsp;Le champ NOM doit être rempli</span></p>
    <p>&nbsp;</p>
    <label for="prenom"><font color="#FF0000"> *</font>Votre prénom :</label>
    <p>
    <input id="prenom" name="prenom" size="50" maxlength="100" type="text" class="error" value="" />
    <span id = "prenom_vide" class="important">&nbsp;Le champ PRENOM doit être rempli</span></p>
    <p>&nbsp;</p>
     
    <label for="mail"><font color="#FF0000"> *</font>Votre adresse mail :</label>
    <p>
    <input name="mail" id="mail" size="50" maxlength="100" type="text" class="error" value="" />
    <span id = "mail_vide" class="important">&nbsp;Le champ MAIL doit être rempli</span><span id = "mail_valide" class="important">&nbsp;Le champ MAIL est invalide</span></p>
    <p>&nbsp;</p>
     
    <label for="numero"><font color="#FF0000"> *</font>Votre numéro de
    téléphone :</label>
    <p>
    <input name="numero" id="numero" size="15" maxlength="15" type="text" class="error" value="0473266334"/>
    <span id = "numero_vide" class="important">&nbsp;Le champ TELEPHONE doit être rempli</span><span id = "numero_valide" class="important">&nbsp;Le champ TELEPHONE est invalide</span></p>
    <p>&nbsp;</p>
     
    <label for="pass"><font color="#FF0000"> *</font>Password :</label>
    <p>
    <input type="password" name="pass" id="pass" value="" class="error" />
    <span id = "pass_vide" class="important">&nbsp;Le champ PASSWORD doit être rempli</span></p>
     
    <p>&nbsp;</p>
    <label for="confirmation"><font color="#FF0000"> *</font>Confirmation password :</label>
    <p>
    <input type="password" name="confirmation" id="confirmation" value="" class="error" />
    <span id = "confirmation_vide" class="important">&nbsp;Le champ CONFIRMATION doit être rempli</span><span id = "confirmation_egal" class="important">&nbsp;Le champ CONFIRMATION n'est pas identique au champ PASSWORD</span></p>
    </div>
    </fieldset>
    <input type="submit"  value="Enregistrement"/>
    </form>
    </div>
    </body>
    </html>
    (J'ai modifié le nom des fonctions pour qu'elles soient plus évocatrices)

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Merci beaucoup ABCIWEB tout fonctionne Merci Merci!!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Probleme d'affichage des accents dans une page HTML
    Par Oussama Khazri dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 05/02/2012, 01h50
  2. ecrire un message d'erreur dans la page html
    Par slyfer dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/08/2007, 14h27
  3. Affichage d'un flux pdf dans une page html
    Par NizarK dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 27/03/2007, 08h41
  4. problème affichage dans une page html
    Par ljoly dans le forum Flash
    Réponses: 6
    Dernier message: 22/09/2006, 16h57
  5. Affichage d'un tableau perl dans une page HTML
    Par Jim_Nastiq dans le forum Web
    Réponses: 7
    Dernier message: 13/04/2006, 11h27

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