Vérification formulaire en JavaScript

Résolu
Rom190686 Messages postés 436 Date d'inscription   Statut Membre Dernière intervention   -  
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Malgré mes nombreuses recherches, je ne trouve pas ce que je cherche dans les forums.
Je souhaite valider mes champs formulaire en JavaScript au moment du submit.
Cependant, tous les tutos que j'ai lu proposent l'ouverture d'une boite de dialogue lorsque que la vérification est fausse.
Moi je voudrais simplement qu'en dessous du champs formulaire une ligne en rouge indique : "le mail n'est pas correcte..., merci de renseigner votre nom..., etc....."
J'ai très peu de connaissance en JS car je développe mes site exclusivement en PHP.
Merci d'avance pour aide.


A voir également:

5 réponses

avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Salut.

Si tu ne connais pas le Javascript il n'est pas trop tard pour l'apprendre.

Il suffit de placer le texte, invisibles par défaut, près des champs.
Ensuite, pour chaque vérification, tu affiches (ou pas) le texte invisible.

Par exemple :
https://gist.github.com/anonymous/5bd48dd224a0b3f9a585
0
Rom190686 Messages postés 436 Date d'inscription   Statut Membre Dernière intervention   35
 
Bonjour et merci pour ton aide. J'ai testé ton code et c'est exactement ce que je recherche. Cependant, je n'arrive pas à l'adapter donc je colle mon code ci-dessous. Quand je clique sur "envoyer" aucune condition n'est remplie mais le formulaire ce poste tout de même.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<link rel="stylesheet" media="screen" type="text/css" title="Style" href="style.css" />
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
<script type="text/javascript">
var formulaire,
nomInput,
prenomInput,
emailInput,
messageTextarea;

window.onload = function() {
formulaire = document.forms[0];
nomInput = formulaire.elements['nom'];
prenomInput = formulaire.elements['prenom'];
emailInput = formulaire.elements['email'];
messageTextarea = formulaire.elements['message'];

formulaire.onsubmit = function() {
return verifier();
};
};

function verifier() {
var emailRegex = new RegExp('^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$','i');
var nbErrors = 0;

if(nomInput.value == '') {
nomInput.parentNode.getElementsByTagName('span')[0].style.display = 'block';
nbErrors++;
} else {
nomInput.parentNode.getElementsByTagName('span')[0].style.display = 'none';
}

if(prenomInput.value == '') {
prenomInput.parentNode.getElementsByTagName('span')[0].style.display = 'block';
nbErrors++;
} else {
prenomInput.parentNode.getElementsByTagName('span')[0].style.display = 'none';
}

if(!emailRegex.test(emailInput.value)) {
emailInput.parentNode.getElementsByTagName('span')[0].style.display = 'block';
nbErrors++;
} else {
emailInput.parentNode.getElementsByTagName('span')[0].style.display = 'none';
}

if(messageTextarea.value == '') {
messageTextarea.parentNode.getElementsByTagName('span')[0].style.display = 'block';
nbErrors++;
} else {
messageTextarea.parentNode.getElementsByTagName('span')[0].style.display = 'none';
}

return (nbErrors > 0) ? false : true;
}
</script>
</head>
<body>
<div id="wrap">
<div id="header">
<div id="header-text">
<?php include("includes/en-tete.php");?>
</div>
</div>
<?php include("includes/menu.php");?>
<div id="content">
<div id="page">
<h1>Contactez nous !
<br />Une question ? Déposez votre demande</h1>
<p>Détaillez votre demande dans le formulaire ci-dessous :</p>
<p><i>Les champs marqués d'un <sup>(<b><font color="red">*</font></b>)</sup> sont obligatoires</i></p>
<form method="post" action="traitement-contact.php" >
<table>
<tr>
<td><label for="civilite">Votre civilité :</label></td>
<td><input type="text" name="civilite" id="civilite" maxlength="10" /></td>
</tr>
<tr>
<td><label for="nom">Votre Nom :</label></td>
<td><input type="text" name="nom" id="nom" maxlength="50" /></td>
<td><span class="hidden formError">Veuillez Renseigner un nom</span></td>
</tr>
<tr>
<td><label for="prenom">Votre prénom :</label></td>
<td><input type="text" name="prenom" id="prenom" maxlength="50" /></td>
<span class="hidden formError">Veuillez Renseigner un prénom</span>
</tr>
<tr>
<td><label for="email">Votre adresse e-mail :</label></td>
<td><input type="text" name="email" id="email" maxlength="50" /> <sup><b><font color="red">*</font></b></sup></td>
<span class="hidden formError">Veuillez Renseigner une adresse e-mail valide</span>
</tr>
<tr>
<td><label for="message">Votre question :</label><br /></td>
<td><textarea name="message" id="message" rows="5" cols="25"></textarea> <sup><b><font color="red">*</font></b></sup></td>
<span class="hidden formError">Veuillez Renseigner un message</span>
</tr>
<tr>
<td><input type="submit" name="envoyer" value="Envoyer votre demande"/></td>
</tr>
</table>
</form>
</div>
<div id="sidebar">
<?php include("includes/recommandation.php");?>
</div>
<?php include("includes/pied.php");?>
</div>
</div>
</body>
</html>

Merci d'avance
P.S. : les balises de mise en forme sont dans ma feuille de style
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
normal dans

<form method="post" action="traitement-contact.php" >

tu n'as pas nommé ton formualire

il faut mettre

<form name="formulaire" method="post" action="traitement-contact.php" > 


pour que ce dernier soit accessible à la fonction
0
Rom190686 Messages postés 436 Date d'inscription   Statut Membre Dernière intervention   35
 
Merci pour ton aide mais ça ne fonctionne pas. De plus, dans le code qui m'est donné plus haut, le formulaire n'est pas nommé et ça fonctionne .
0
Rom190686 Messages postés 436 Date d'inscription   Statut Membre Dernière intervention   35
 
Le problème venait de mon navigateur qui gardait en cache mon ancien JS.
Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Utilise la balise "code" de CCM pour conserver la mise en forme de tes codes, ou dépose-le sur un pastebin.
0