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

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
EmmaZL
Lézard à collerette
Messages : 245
Inscription : 07 août 2004, 00:43

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

Message 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.
Dernière modification par EmmaZL le 12 août 2005, 13:05, modifié 1 fois.
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème. (devise Shadok)
Ma configuration
nic
Salamandre
Messages : 24
Inscription : 23 mars 2005, 21:06

Message 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;
   }
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message 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:
EmmaZL
Lézard à collerette
Messages : 245
Inscription : 07 août 2004, 00:43

Message 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>
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème. (devise Shadok)
Ma configuration
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message 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 (...) ) 
EmmaZL
Lézard à collerette
Messages : 245
Inscription : 07 août 2004, 00:43

Message 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 == "
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème. (devise Shadok)
Ma configuration
chBok
Iguane
Messages : 991
Inscription : 17 oct. 2003, 19:17

Message par chBok »

:!: euh, juste en passant... le OU conditionnel ne s'écrit-il pas plutôt || en javascript plutôt que or ?
nic
Salamandre
Messages : 24
Inscription : 23 mars 2005, 21:06

Message par nic »

Et oui, exact.
A force de passer d'un langage à l'autre, je me suis mélangé la syntaxe !
EmmaZL
Lézard à collerette
Messages : 245
Inscription : 07 août 2004, 00:43

Message 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
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème. (devise Shadok)
Ma configuration
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 0 invité