Page 1 sur 1

[Résolu] Problème de champs obligatoires avec un formulair

Publié : 11 août 2005, 08:23
par EmmaZL
Bonjour,

J'ai fait un formulaire avec un Javascript qui rend certains champs obligatoires.

Le formulaire est ici : http://www.barf.ch/questionnaire_dents.htm (vous pouvez tester autant de fois que vous voulez)

Et voici le JS :

Code : Tout sélectionner

<script language="JavaScript" type="text/javascript">
<!--
function validateForm() {
 var name = document.myForm.Age.value;
 var name = document.myForm.Taille.value;
 var name = document.myForm.Tartre.value;
 var name = document.myForm.Parodontose.value;
 var name = document.myForm.Brossage.value;
 var name = document.myForm.Detartrage.value;
 var name = document.myForm.Maladies.value;
 var name = document.myForm.Alimentation.value;
 var name = document.myForm.Os.value;
 if (name == "") {
   alert("Vous avez oublié de remplir un champ obligatoire !");
   return false;
 } else return true;
}
//-->
</script>
et

Code : Tout sélectionner

<form name="myForm" action="questionnaire_dents.php" method="post" enctype="multipart/form-data" onSubmit="return validateForm();">
Le problème, c'est que si je remplis seulement le dernier champ obligatoire (celui qui correspond à la question "Votre chien mange-t-il des os ?"), le formulaire est quand même envoyé et le message d'erreur n'apparaît pas.
J'ai essayé de rajouter un autre champ en dessous. Du coup, le champ "Os" est testé correctement, et c'est le nouveau que j'ai ajouté à la fin qui se met à poser problème. Je comprend pas vraiment pourquoi, mais c'est toujours le dernier qui pose problème.

Merci d'avance pour vos conseils...

Emma.

Publié : 11 août 2005, 08:57
par nic
A chaque fois que tu écris :

Code : Tout sélectionner

var name = ...
tu remplaces ce que tu avais dans "name" par la nouvelle valeur.
Donc ton code ne teste que la valeur du dernier champ.
Il faudrait que ta condition ressemble à quelque chose comme ça :

Code : Tout sélectionner

if ( document.myForm.Age.value == "") or 
   (document.myForm.Taille.value == "") or
    .... ) {
      alert("Vous avez oublié de remplir un champ obligatoire !"); 
      return false;
   }

Publié : 11 août 2005, 09:09
par calimo
Ou alors tu remplis un tableau que tu parcours

Code : Tout sélectionner

var form = document.myForm;
var champsAVerifier = new Array( "form.Age.value", "form.Taille.value", "form.Tartre.value;", "...", "form.Os.value" );

for ( i = 0; i < form.length; i++ ) {
	if (form[i] =="") {
		alert("Vous avez oublié de remplir un champ obligatoire !");
		return false; 
	}
}
(Il faudra en plus trouver un moyen de casser la boucle en cas de champ manquant, sinon s'il manque 10 champs il faudra cliquer 10 fois sur OK :wink:

La solution de nic a l'avantage de permettre de dire au visiteur exactement quel champ il n'a pas rempli :wink:

Publié : 11 août 2005, 10:46
par EmmaZL
Merci,

J'ai fait comme nic a dit, mais ça ne marche plus du tout. Maintenant, même si je ne remplis aucun champ, ça envoie quand même les données... :cry:

Est-ce que j'ai fait quelque chose de faux ? Voilà le nouveau code :

Code : Tout sélectionner

<script language="JavaScript" type="text/javascript">
<!--
function validateForm() {
 if ( document.myForm.Age.value == "") or
 if ( document.myForm.Taille.value == "") or
 if ( document.myForm.Tartre.value == "") or
 if ( document.myForm.Parodontose.value == "") or
 if ( document.myForm.Brossage.value == "") or
 if ( document.myForm.Detartrage.value == "") or
 if ( document.myForm.Maladies.value == "") or
 if ( document.myForm.Alimentation.value == "") or
 if ( document.myForm.Os.value == "")
        {
   alert("Vous avez oublié de remplir un champ obligatoire !");
   return false;
 } else return true;
}
//-->
</script>

Publié : 11 août 2005, 11:50
par calimo
Je pense que tu devrais regarder ta console javascript pour t'apercevoir que ta syntaxe ne doit pas être correcte (mais pourquoi n'arrête-t-il pas tout ?)

Si je ne me trompe pas, or if n'existe pas comme elseif. Tu dois tout imbriquer, ça devrait être quelque chose du genre :

Code : Tout sélectionner

if ( (document.myForm.Age.value == "") or (document.myForm.Taille.value == "") or (document.myForm.Tartre.value == "") or (...) ) 

Publié : 11 août 2005, 13:44
par EmmaZL

Code : Tout sélectionner

<script language="JavaScript" type="text/javascript">
<!--
function validateForm() {
 if (  ( document.myForm.Age.value == "") or ( document.myForm.Taille.value == "") or ( document.myForm.Tartre.value == "") or ( document.myForm.Parodontose.value == "") or ( document.myForm.Brossage.value == "") or ( document.myForm.Detartrage.value == "") or ( document.myForm.Maladies.value == "") or ( document.myForm.Alimentation.value == "") or ( document.myForm.Os.value == "") )
        {
   alert("Vous avez oublié de remplir un champ obligatoire !");
   return false;
 } else return true;
}
//-->
</script>
Ca marche pas... :cry: :cry: :cry:

Voilà ce que me dit la console :

Code : Tout sélectionner

Erreur : missing ) after condition
Fichier Source : http://www.barf.ch/questionnaire_dents.htm
Ligne : 47, Colonne : 42
Code Source :
 if (  ( document.myForm.Age.value == "") or ( document.myForm.Taille.value == "") or ( document.myForm.Tartre.value == "") or ( document.myForm.Parodontose.value == "") or ( document.myForm.Brossage.value == "") or ( document.myForm.Detartrage.value == "

Publié : 11 août 2005, 17:02
par chBok
:!: euh, juste en passant... le OU conditionnel ne s'écrit-il pas plutôt || en javascript plutôt que or ?

Publié : 11 août 2005, 21:53
par nic
Et oui, exact.
A force de passer d'un langage à l'autre, je me suis mélangé la syntaxe !

Publié : 12 août 2005, 13:04
par EmmaZL
chBok a écrit ::!: euh, juste en passant... le OU conditionnel ne s'écrit-il pas plutôt || en javascript plutôt que or ?
Merciiiiiiiiiiiiiiiiiiiii !!! Ca maaaaaaaaaarche !!! :D :D :D :D