Validation de plusieurs champs d'un formulaire
BOnjour,
J'ai une page 'formulaire_contact.html' sur laquelle j'ai des champs que l'utilisateur doit remplir :
Code:
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
| <form name="formulaire" action="formulaire_contact_tr.php" method="post" enctype="multipart/form-data" onsubmit="return valider()">
<table width="627" border="0" cellspacing="0" cellpadding="0">
<tr>
<td> </td>
<td colspan="3"><span style="font-size: large; font-weight: bold; font-family: "Arno Pro""><u>Formulaire de contact : </u></span></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td colspan="2"> </td>
</tr>
<tr>
<td width="25"> </td>
<td width="233"><div align="right" >Votre nom et prénom : </div></td>
<td colspan="2"><input name="nom" type="text" size="30" /> <span style="font-weight: bold; color: #FF0000">*</span></td>
</tr>
<tr>
<td> </td>
<td><div align="right" >Adresse mail : </div></td>
<td colspan="2"><input name="mail" type="text" size="50" />
<span style="font-weight: bold"> <span style="color: #FF0000">*</span></span></td>
</tr>
<tr>
<td> </td>
<td><div align="right" >Téléphone : </div></td>
<td colspan="2"><input name="telephone" type="text" size="15" /></td>
</tr>
<tr>
<td> </td>
<td><div align="right" >Objet de votre message : </div></td>
<td colspan="2"><select name="choix">
<option value="pas de choix effectué !" selected="selected">Veuillez choisir un objet ...</option>
<option value="Information sur le stock">Information sur le stock</option>
<option value="Vendre des produits d'occasion">Je souhaite vendre des produits d'occasion</option>
<option value="Achat d'une carte de membre">Je souhaite acheter une carte de membre</option>
<option value="Concerne le site internet">Concerne le site internet</option>
<option value="Idées, suggestions">Idées, suggestions, ...</option>
<option value="Autre sujet">Concerne un autre sujet</option>
</select> <span style="font-weight: bold; color: #FF0000">*</span></td>
</tr>
<tr>
<td> </td>
<td valign="top"><div align="right" >Votre message : </div></td>
<td width="332" valign="top"><textarea name="message" rows="8" cols="50">...</textarea></td>
<td width="37" valign="top"> <span style="font-weight: bold; color: #FF0000">*</span></td>
</tr>
<tr>
<td> </td>
<td colspan="3" valign="top">Vous souhaitez être contacté par :
<input type="radio" name="contact" value="mail" id="mail" checked="checked" /> <label for="mail">mail</label>
ou par
<input type="radio" name="contact" value="téléphone" id="phone" /> <label for="phone">téléphone</label></td>
</tr>
<tr>
<td> </td>
<td colspan="3" valign="top"> </td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0" valign="top">
<tr>
<td width="36%"><div align="center">
<input type="reset" value="Efface les données du formulaire"> <input type="submit" value="Envoi de votre message" />
</div></td>
</tr>
</table>
</form> |
Le bouton OnSubmit lance la procédure de vérification de la validité des champs :(j'y ai placé quelques 'alert' pour faire des vérifications)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <script language="javascript" type="text/javascript">
function valider()
{
var form_erreur ="";
var frm=document.forms['formulaire'];
alert ("alerte avant le test contenant la valeur du champ 'nom' : "+frm.elements['nom'].value);
if(frm.elements['nom'].value == "")
{form_erreur = "Veuillez indiquer votre nom";
alert("alarte après le premier test contenant la valeur de form_erreur : "+form_erreur);}
if (form_err != "") {
alert("alerte annoncant form_erreur n'est pas vide et peut donc na pas valider le formulaire.")
return false;
}
else {
alert("cencé nous donner le contenu de form_err"+form_erreur);
return true}
}
</script> |
Le soucis c'est que quand il n'y a rien dans la champ 'nom' la fonction semble quand même renvoyer 'TRUE' car le formulaire est validé et la page 'formulaire_contact_tr.php' est affichée.
Je ne vois pas pourquoi ???
Est-ce que quelqu'un aurait une idée ? Merci d'avance.