Bonjour,
Je rencontre un soucis avec un script en js pour la validation d'un simple formulaire de contact.
Ci-dessous la page html
Code :
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <meta http-equiv="content-type" content="text/html; charset=windows-1250">
- <meta name="generator" content="PSPad editor, www.pspad.com">
- <title>gestFuite - Contact</title>
-
- <!-- CSS pour formulaire -->
- <link rel="stylesheet" type="text/css" href="css/contact.css" />
- <!-- Appel fonctions js pour controle formulaire -->
- <script type="text/javascript" src="js/contact.js"></script>
- </head>
- <body>
- <form id="contactform" class="rounded" method="post" action="traitement_contact.php" onsubmit="return verifForm(this)" >
- <h3>Formulaire de contact</h3>
-
- <div class="field">
- <label for="nom">Nom:</label>
- <input type="text" class="input" name="nom" id="nom" onblur="verifNom(this)" />
- <p class="hint">Entrer votre nom.</p>
- </div>
-
- <div class="field">
- <label for="email">Email:</label>
- <input type="text" class="input" name="email" id="email" onblur="verifEmail(this)" />
- <p class="hint">Entrer votre email.</p>
- </div>
-
- <div class="field">
- <label for="objet">Objet:</label>
- <input type="text" class="input" name="objet" id="objet" onblur="verifObjet(this)" />
- <p class="hint">Entrer un objet.</p>
- </div>
-
- <div class="field">
- <label for="message">Message:</label>
- <textarea class="input textarea" name="message" id="message" onblur="verifMessage(this)" >
- </textarea>
- <p class="hint">Saisir votre message.</p>
- </div>
-
- <input type="submit" name="envoi" class="button" value="Submit" />
- </form>
- </body>
- </html>
|
et voici mon script contact.js
Code :
- // JavaScript Document
- // Si erreur, alors le champs en cause est mis en couleur
- function surligne(champ, erreur)
- {
- if(erreur)
- champ.style.backgroundColor = "#fba";
- else
- champ.style.backgroundColor = "";
- };
- // On vérifie si le champs nom n'est pas vide
- function verifNom(champ)
- {
- if(champ.value == "" )
- {
- surligne(champ, true);
- return false;
- }
- else
- {
- surligne(champ, false);
- return true;
- }
- };
- //On vérifie si l'email entré est bien valide
- function verifEmail(champ)
- {
- var regex = /^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/;
- if(!regex.test(champ.value))
- {
- surligne(champ, true);
- return false;
- }
- else
- {
- surligne(champ, false);
- return true;
- }
- };
- // On vérifie si le champs objet n'est pas vide
- function verifObjet(champ)
- {
- if(champ.value == "" )
- {
- surligne(champ, true);
- return false;
- }
- else
- {
- surligne(champ, false);
- return true;
- }
- };
- // On vérifie si le champs message n'est pas vide
- function verifMessage(champ)
- {
- if(champ.value == "" )
- {
- surligne(champ, true);
- return false;
- }
- else
- {
- surligne(champ, false);
- return true;
- }
- };
- // On vérifie si tout le formulaire est bien rempli avant l'envoi
- function verifForm(f)
- {
- var nomOk = false;
- var emailOk = false;
- var objetOk = false;
- var messageOk = false;
-
- nomOk = verifNom(f.nom);
- emailOk = verifEmail(f.email);
- objetOk = verifObjet(f.objet);
- messageOk = verifMessage(f.message);
- if(nomOk && emailOk && objetOk && messageOk)
- {
- return true;
- }
- else
- {
- alert("Veuillez remplir correctement tous les champs" );
- return false;
- }
- };
|
Donc en gros, je vérifie que chaque champs (Nom, Objet et Message) ne soient pas vide, et que le champs 'Email' est une adresse valide.
Si un des champs n'est pas conforme, la zone de saisie se colore en rouge.
Ce contrôle se fait après chaque sortie de champs (onblur) et encore une fois au final, sur le (onsubmit) du formulaire.
Normalement, si un des champs n'est pas validé, la valeur 'false' est retournée et le formulaire ne devait pas être envoyé (onsubmit="return(...)" ).
Hors que les champs soient remplis ou pas, le formulaire passe outre. Je précise que je suis sous Google Chrome (25), hors apparement sous IE 10, ça fonctionne.
Inutile de vous préciser que je suis plus que débutant en JS.
Si quelqu'un peut m'expliquer ce quil faudrait faire pour que cela fonctionne aussi sous Google Chrome, je lui en serais très reconnaissant.
Merci d'avance
Salutations
Message édité par jbboschung le 17-03-2013 à 16:20:07