pot1ch3
le 26 aout 2009 à 11h02
Bonjour, je vais me pendre si personne peux m'aider

:pt1cable: j'ai essayé divers combinaisons pour rendre obligatoire les champs : nom, prenom, date arrivée et départ et email, mais rien à faire le formulaire s'envoie même en ayant rien rempli. Quelqu'un peut il regarder ce qui cloche ???
Merci
-->Message édité par pot1ch3 le 28/08/2009 12:47:14<--
QuiPhenix
le 26 aout 2009 à 12h32
Bonjour,
Votre fonction est bien compliquée pour si peu de choses. Je suppose que vous avez trouvé ca sur un site spécialisé ?
Utilisez plutôt cette fonction JavaScript (supprimez les 2 autres) et adaptez la à vos besoin:
valider_formulaire(thisForm) {
if(thisForm.nom.value == '') {
alert('Vous devez indiquer votre nom');
thisForm.nom.focus();
return false;
}
if(thisForm.prenom.value == '') {
alert('Vous devez indiquer votre prenom');
thisForm.prenom.focus();
return false;
}
if(thisForm.tel.value == '') {
alert('Vous devez indiquer votre numero de telephone');
thisForm.tel.focus();
return false;
}
if(thisForm.email.value == '') {
alert('Vous devez indiquer votre adresse email');
thisForm.email.focus();
return false;
}
if(thisForm.codepostal.value == '') {
alert('Vous devez indiquer votre code postal');
thisForm.codepostal.focus();
return false;
}
if(thisForm.ville.value == '') {
alert('Vous devez indiquer votre ville');
thisForm.ville.focus();
return false;
}
if(thisForm.pays.value == '') {
alert('Vous devez indiquer votre pays');
thisForm.pays.focus();
return false;
}
if(thisForm.arrivee.value == '') {
alert('Vous devez indiquer votre date d'arrivee');
thisForm.arrivee.focus();
return false;
}
if(thisForm.depart.value == '') {
alert('Vous devez indiquer votre date de depart');
thisForm.depart.focus();
return false;
}
if(thisForm.nbpersonnes.value == '') {
alert('Vous devez indiquer pour combien de personne');
thisForm.nbpersonnes.focus();
return false;
}
return true;
}
et a modifier dans votre balise <form>:
<form ... onSubmit="valider_formulaire(this)">
Niveau fonctionnement, c'est plutôt simple. La même structure est répétée autant de fois qu'il y a de champs a vérifier.
Le
if teste si le champ est vide (attention, si la personne met uniquement un espace, il sera considéré comme rempli). Si c'est le cas, un message d'alerte signale à l'utilisateur que ce champ est vide, le script repositionne le curseur sur le champ défaillant et donne l'ordre au formulaire de ne pas s'envoyer.
Si aucun champ n'est vide, c'est que tout est bon et l'ordre est donné d'envoyer le formulaire.
Il est aussi a noter que ce genre de fonction ne dispense pas de revérifier les champs lors du traitement sur la page d'après. En effet, il suffit que le JavaScript soit désactivé sur le navigateur de l'utilisateur pour que le script ne fasse aucune vérification et envois "bêtement" le formulaire.
Une petite remarque aussi, je ne pense pas qu'il soit bon de mettre le code postal comme obligatoire si vous attendez des inscriptions venant d'autres pays. Je l'ai inclus dans la création du script, mais il n'appartient qu'a vous de supprimer le bloc concerné.
-------
pot1ch3
le 27 aout 2009 à 13h00
Merci, je test ca et je vous dit
pot1ch3
le 27 aout 2009 à 14h34
J'ai modifié comme vous m'avez dit mais aucun des scripts ne fonctionnent, le problème vient-il peut être de ma page car elle est dans une frame ...
</STYLE>
<base target="_blank">
<script language="JavaScript" type="text/JavaScript">
<!--
valider_formulaire(thisForm) {
if(thisForm.nom.value == '') {
alert('Vous devez indiquer votre nom');
thisForm.nom.focus();
return false;
}
if(thisForm.prenom.value == '') {
alert('Vous devez indiquer votre prenom');
thisForm.prenom.focus();
return false;
}
if(thisForm.tel.value == '') {
alert('Vous devez indiquer votre numero de telephone');
thisForm.tel.focus();
return false;
}
if(thisForm.email.value == '') {
alert('Vous devez indiquer votre adresse email');
thisForm.email.focus();
return false;
}
if(thisForm.codepostal.value == '') {
alert('Vous devez indiquer votre code postal');
thisForm.codepostal.focus();
return false;
}
if(thisForm.ville.value == '') {
alert('Vous devez indiquer votre ville');
thisForm.ville.focus();
return false;
}
if(thisForm.pays.value == '') {
alert('Vous devez indiquer votre pays');
thisForm.pays.focus();
return false;
}
if(thisForm.arrivee.value == '') {
alert('Vous devez indiquer votre date d arrivee');
thisForm.arrivee.focus();
return false;
}
if(thisForm.depart.value == '') {
alert('Vous devez indiquer votre date de depart');
thisForm.depart.focus();
return false;
}
if(thisForm.nbpersonnes.value == '') {
alert('Vous devez indiquer pour combien de personne');
thisForm.nbpersonnes.focus();
return false;
}
return true;
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body bgcolor="#FBEDA5" topmargin="0" leftmargin="0" alink="#B30000">
<div align="center">
<center>
<table border="0" cellpadding="10" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
<tr>
<td>
<p align="justify"><b>
<font face="Verdana" size="1" color="#FF5A00">
<img border="0" src="images/ti_resa.gif" width="106" height="47"><br>
</font></b><table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
<tr>
<td valign="top"><b>
<font face="Verdana" size="1" color="#FF5A00">
<img border="0" src="images/ic_resa.gif" width="45" height="45"></font></b></td>
<td> </td>
<td>
<p dir="ltr"><b><span class="Style8"><font face="Verdana" size="2">Réservez
dès maintenant votre chambre !</font></span><u><font face="Verdana" size="1" color="#FF5A00"><br>
<br>
</font><font face="Verdana" size="1"><span class="Style5"><img border="0" src="images/puce.gif" width="7" height="6"></span></font></u><span class="Style5"><font face="Verdana"><span class="Style4">Dès
réception de votre demande,
nous vous confirmerons l'enregistrement de votre réservation</span></font><font face="Verdana" size="1"><br>
</font></span><span class="Style7"><font face="Verdana">(pour
consulter les tarifs de nos chambres,</font>
<font face="Verdana"><a target="_self" href="phnompenh-cambodge-hotel/chambres_if.htm">cliquez
ici</a>.)</font></span></b></td>
</tr>
</table>
<p align="justify" dir="ltr">
<b><font face="Verdana" size="2" color="#B30000">
<marquee>
</marquee></font><font face="Verdana" size="2">
<marquee>
<span class="Style5">Conditions tarifaires particulières pour tout séjour de 5 nuits et + ...</span>
</marquee>
</font><font face="Verdana" size="2" color="#B30000">
<marquee>
</marquee>
</font></b><br>
<form action="confirmation-resa.php" method="POST" name="reservation" id="reservation" style="margin: 0" onSubmit="valider_formulaire(this)";return document.MM_returnValue" target="_self">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
<tr>
<td width="78">
<span class="Style8"><b>
<font face="Verdana" size="1">nom*</font></b></span></td>
<td width="150"><b><font face="Verdana" size="1" color="#B30000">
<input type="text" name="nom" size="20"></font></b></td>
<td width="96">
<p align="left" class="Style8"><b>
<font face="Verdana" size="1"> prénom*</font></b></td>
<td width="173">
<p align="right"><b><font face="Verdana" size="1" color="#B30000">
<input type="text" name="prenom" size="20"></font></b></td>
</tr>
<tr>
<td width="78">
<p class="Style8" style="margin-right: 10">
<b><font face="Verdana" size="1">tel. </font></b></td>
<td width="150"><b><font face="Verdana" size="1" color="#B30000">
<input type="text" name="tel" size="15"></font></b></td>
<td width="96"><b>
<font face="Verdana" size="1" color="#B30000"> </font><font face="Verdana" size="1"><span class="Style5"><span class="Style8">e-mail*</span> </span></font>
</b></td>
<td width="173">
<p align="right"><b><font face="Verdana" size="1" color="#B30000">
<input name="email" type="text" id="email" value="" size="20">
</font></b></td>
</tr>
<tr>
<td rowspan="3" width="78">
<b><font face="Verdana" size="1"><span class="Style8">adresse</span></font><font face="Verdana" size="1" color="#B30000"><br>
</font></b></td>
<td rowspan="3" width="150">
<font color="#B30000">
<textarea rows="4" name="adresse" cols="16"></textarea></font></td>
<td align="right" width="96">
<p align="left">
<b><font face="Verdana" size="1" color="#B30000"> </font><font face="Verdana" size="1"><span class="Style8">code postal </span></font></b></td>
<td width="173">
<p align="right"><b><font face="Verdana" size="1" color="#B30000">
<input type="text" name="codepostal" size="20"></font></b></td>
</tr>
<tr>
<td align="right" width="96">
<p align="left" class="Style8">
<b><font face="Verdana" size="1"> ville</font></b></td>
<td width="173">
<p align="right"><b><font face="Verdana" size="1" color="#B30000">
<input type="text" name="ville" size="20"></font></b></td>
</tr>
<tr>
<td align="right" width="96">
<p align="left">
<b><font face="Verdana" size="1" color="#B30000"> </font><font face="Verdana" size="1"><span class="Style8">pays*</span></font></b></td>
<td width="173">
<p align="right"><b><font face="Verdana" size="1" color="#B30000">
<input type="text" name="pays" size="20"></font></b></td>
</tr>
<tr>
<td colspan="4" width="497">
<font color="#B30000">
<img border="0" src="images/environnement_if/ligne.gif" width="488" height="1"><br>
</font></td>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
<tr>
<td>
<p class="Style8" style="margin-right: 10">
<b><font face="Verdana" size="1">arrivée </font> </b><font face="Verdana" size="1"><b>(jj-mm-aa)*</b></font></td>
<td>
<p align="left"><b><font face="Verdana" size="1" color="#B30000">
<input type="text" name="arrivee" size="8"></font></b></td>
<td>
<p class="Style8" style="margin-right: 10">
<b><font face="Verdana" size="1">départ </font> </b><font face="Verdana" size="1"><b>(jj-mm-aa)*</b></font></td>
<td>
<p align="left"><b><font face="Verdana" size="1" color="#B30000">
<input type="text" name="depart" size="8"></font></b></td>
</tr>
<tr>
<td>
<b><font face="Verdana" size="1"><span class="Style8">nombre d'adultes</span></font><font face="Verdana" size="1" color="#B30000"> <br>
</font></b></td>
<td><b><font face="Verdana" size="1" color="#B30000">
<input type="text" name="nbpersonnes" size="5">
</font></b></td>
<td>
<font color="#B30000"><b><font face="Verdana" size="1"><span class="Style8">nombre d'enfants</span></font></b> </font></td>
<td><font color="#B30000"><b><font face="Verdana" size="1" color="#B30000">
<input type="text" name="nbpersonnes2" size="5">
</font></b></font></td>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
<tr>
<td valign="top" colspan="2">
<font color="#B30000">
<img border="0" src="images/environnement_if/ligne.gif" width="488" height="1"><br>
</font></td>
</tr>
<tr>
<td valign="top">
<p style="margin-right: 10"><b>
<font face="Verdana" size="1"><span class="Style8">souhaits,
remarques,<br>
heure
d'arrivée
à l'aéroport</span></font><font face="Verdana" size="1" color="#B30000"><br>
</font></b></td>
<td align="left">
<p align="left">
<textarea name="remarques" cols="45" rows="5" id="souhaits remarques"></textarea>
</td>
</tr>
<td valign="top" colspan="2"><span class="Style5"><i><b><font face="Verdana" size="1">*champs obligatoires</font></b></i></span></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</center>
</div>
</body>
</html>
]
-->Message édité par pot1ch3 le 28/08/2009 12:50:17<--
QuiPhenix
le 27 aout 2009 à 14h47
Essayez d'enlever dans le
OnSubmit du
<form ...> le
;return document.MM_returnValue
-------
pot1ch3
le 31 aout 2009 à 05h35
non j'ai toujours le même problème ... je comprends pas
QuiPhenix
le 31 aout 2009 à 08h23
Le JavaScript est bien activé sur votre navigateur ?
Vous utilisez Internet Explorer, Firefox, Opera ou un autre ?
Si vous utilisez Firefox, la console d'erreurs (Outils -> Console d'erreurs) dit quoi après avoir tenté de valider votre formulaire ?
-------
pot1ch3
le 31 aout 2009 à 11h33
J'utilise safari et Firefox, (avec les deux ca marche pas)
avec Firefox dans console d'erreur, j'ai écrit :
Erreur : missing, before statement
(le lien de la page resa)
valider_formulaire(thisForm) {
J'ai également des avertissements pour la scrollbar que j'ai cachée avec le fond du site.
-->Message édité par pot1ch3 le 31/08/2009 11:36:35<--
QuiPhenix
le 01 septembre 2009 à 08h39
Il a l'air de lui manquer une virgule devant le nom de la fonction, bizarre ...
Vous pouvez donner la balise <form...> que vous utilisez ?
-------
pot1ch3
le 01 septembre 2009 à 09h52
<form action="confirmation-resa.php" method="POST" name="reservation" id="reservation" style="margin: 0" onSubmit=onSubmit="valider_formulaire(this)" target="_self">
QuiPhenix
le 01 septembre 2009 à 14h02
Normal, il y a 2 onSubmit= a la suite ... essayez:
<form action="confirmation-resa.php" method="POST" name="reservation" id="reservation" style="margin: 0" onSubmit="valider_formulaire(this)" target="_self">
-------
pot1ch3
le 01 septembre 2009 à 15h19
c'est toujours le même problème, je ne comprends plus .... je vais de venir fou
pot1ch3
le 01 septembre 2009 à 17h35
Erreur : missing ; before statement
Fichier Source : (liens page resa)
Ligne : 40, Colonne : 27
Code Source :
valider_formulaire(thisForm) {
Apparemment dans la console d'erreur il y a une flèche verte qui indique juste après (thisForm)
Copie du script de ma page
<base target="_blank">
<script language="JavaScript" type="text/JavaScript">
<!--
valider_formulaire(thisForm) {
if(thisForm.nom.value == '') {
alert('Vous devez indiquer votre nom');
thisForm.nom.focus();
return false;
}
if(thisForm.prenom.value == '') {
alert('Vous devez indiquer votre prenom');
thisForm.prenom.focus();
return false;
}
if(thisForm.tel.value == '') {
alert('Vous devez indiquer votre numero de telephone');
thisForm.tel.focus();
return false;
}
if(thisForm.email.value == '') {
alert('Vous devez indiquer votre adresse email');
thisForm.email.focus();
return false;
}
if(thisForm.codepostal.value == '') {
alert('Vous devez indiquer votre code postal');
thisForm.codepostal.focus();
return false;
}
if(thisForm.ville.value == '') {
alert('Vous devez indiquer votre ville');
thisForm.ville.focus();
return false;
}
if(thisForm.pays.value == '') {
alert('Vous devez indiquer votre pays');
thisForm.pays.focus();
return false;
}
if(thisForm.arrivee.value == '') {
alert('Vous devez indiquer votre date d arrivee');
thisForm.arrivee.focus();
return false;
}
if(thisForm.depart.value == '') {
alert('Vous devez indiquer votre date de depart');
thisForm.depart.focus();
return false;
}
if(thisForm.nbpersonnes.value == '') {
alert('Vous devez indiquer pour combien de personne');
thisForm.nbpersonnes.focus();
return false;
}
return true;
}
//-->
</script>
et quand je valide le formulaire dans la console d'erreur j'ai ca :
Erreur : valider_formulaire is not defined
Fichier Source : (liens page resa)
Ligne : 1
-->Message édité par pot1ch3 le 01/09/2009 20:09:48<--
pot1ch3
le 02 septembre 2009 à 05h51
quand ce problème sera résolu je cherche également a doubler le champs email pour éviter les spams
QuiPhenix
le 02 septembre 2009 à 10h26
Encore un autre probleme, dans la balise script, il manque le mot-clé
function
<script language="JavaScript" type="text/JavaScript">
<!--
function valider_formulaire(thisForm) {
if(thisForm.nom.value == '') {
alert('Vous devez indiquer votre nom');
...
Pas dans la balise form !
-------
pot1ch3
le 02 septembre 2009 à 13h56
j'ai changé mais toujours pareil ...
Comment peut-on faire ??? ca reste hallucinant
-->Message édité par pot1ch3 le 02/09/2009 14:22:17<--
QuiPhenix
le 03 septembre 2009 à 10h50
Pas de changement dans la console d'erreurs ?
-------
pot1ch3
le 03 septembre 2009 à 11h37
Si maintenant j'ai :
Erreur : thisForm is not defined
Fichier Source : .......
Ligne : 1
show counter bis
le 03 septembre 2009 à 14h33
Essaye avec onSubmit="valider_formulaire(document.reservation)"
pot1ch3
le 04 septembre 2009 à 07h07
Oui super maintenant ca me demande bien de remplir les champs manquants. Par contre le problème lorsque ces messages s'affichent "vous devez renseigner votre ...) et que je clique sur OK le curseur se place sur le champs manquant et le formulaire s'envoie ...
-->Message édité par pot1ch3 le 04/09/2009 07:14:10<--
QuiPhenix
le 04 septembre 2009 à 11h30
Si vous remplissez correctement tout les champs, le formulaire s'envoie aussi ?
Si oui, doit encore manquer un
return dans le
<form>
<form ... onSubmit="return valider_formulaire(document.reservation)">
-------
pot1ch3
le 04 septembre 2009 à 14h50
Super tout fonctionne, vraiment un grand grand merci à tous pour votre aide
J'aurai 2 dernières choses, comment doubler mon champs email
et également ajouter un mini calendrier pour la date d'arrivée et de départ ?
QuiPhenix
le 04 septembre 2009 à 19h52
Pour doubler, il suffit d'ajouter un champ nommé email2 par exemple et un autre test sous l'occupation du champ email pour vérifier le cas où les 2 champs seraient différents:
[...]
if(thisForm.email.value == '') {
alert('Vous devez indiquer votre adresse email');
thisForm.email.focus();
return false;
}
if(thisForm.email2.value != thisForm.email.value) {
alert('Les champs emails doivent etre identiques');
thisForm.email2.focus();
return false;
}
if(thisForm.codepostal.value == '') {
alert('Vous devez indiquer votre code postal');
[...]
Niveau calendrier, ce genre de chose a été fait et refait. Cherchez sur le net des scripts adaptés a vos besoins
-------
pot1ch3
le 04 septembre 2009 à 21h47
merci QuiPhenix je vais regarder ce que je trouve