Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 29/06/2009, 23h36   #1
Invité de passage
 
Inscription : mai 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 6
Points : 0
Points : 0
Par défaut Test des champs vide d'un formulaire !

Bonjour à tous !

Voici un fragment de code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
<form method="POST" action="traiter_ajout.php" name="form_ajout_question" onsubmit="return verif_vides(form_ajout_question)">
    <table>				
	<tr>
	     <td>La question : </td><td><input type="text" name="question" /></td>
	</tr>
 
	<tr>
	     <td>La bonne réponse : </td><td><input type="text" name="bonne_rep" /></td>
	</tr>
 
	<?php								      $_SESSION['nbreponse']=$_GET['nb_reponse'];
	      for($i=0; $i<$_SESSION['nbreponse']; $i++ ){
	         $j=$i+1;
	         echo "<tr>";
	         echo "<td>Mauvaise réponse n°$j : </td>";
	         echo "<td><input type='text' name='mauvaise[".$j."]'></td>";
	         echo "</tr>";
	       }
	?>
    </table>
    <input type="submit" name="questionnaire" value="Valider la question">
</form>

Et avec le code suivant en javascript, je m'assure que tous les champs soient remplis !

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
<script language="javascript" type text/javascript>
function verif_vides(formulaire) {
 
if(formulaire.question.value.length < 1) {
alert('Le champ question doit-être rempli !');
formulaire.question.focus();
return false;
}
 
if(formulaire.bonne_rep.value.length < 1) {
alert('Le champ bonne réponse doit-être rempli !');
formulaire.bonne_rep.focus();
return false;
}
 
if(formulaire.mauvaise[1].value.length < 1) {
alert('Le champ mauvaise réponse n°1 doit-être rempli !');
formulaire.mauvaise[1].focus();
return false;
}
 
if(formulaire.mauvaise[2].value.length < 1) {
alert('Le champ mauvaise réponse n°1 doit-être rempli !');
formulaire.mauvaise[2].focus();
return false;
}
 
 
return true;
}
</script>

Le problème que je rencontre car je ne connais pas du tout le javascript, c'est que je n'arrive pas à tester mes variable "mauvaise[xxx]"!

Sachant que leurs nombres varient : il y a au minimum mauvaise[1], et au maximum mauvaise[4].

ex : des fois il ya aura les variables mauvaise[1] et mauvaise[2]
et une autre fois, il y aura les variables mauvaise[1], mauvaise[2], mauvaise[3],...


En fait le principe est que sur une premiere page l'utilisateur indique le nombre de champs "mauvaises réponses" il veut, et la page d'après propose le formulaire.

Et c'est ce formulaire que je souhaiterai tester !
Ca marche pour les champs question et bonne reponse, mais pour les champs mauvaise réponse (mauvaise[xxx]) ça ne fonctionne pas (ça ignore qu'il soit vide), je ne vois pas comment faire.


Merci pour votre aide et à bientôt !!!
misterg94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 08h37   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 29 074
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 29 074
Points : 43 300
Points : 43 300
Première remarque:
Adopte une syntaxe qui t'éviteras des problèmes dans l'avenir




Code :
document.fomrs['formulaire'].elements['mauvaise']
ou
Code :
document.getElementsByName['mauvaise']

tu recupères donc une collection d'objets :
et tu la scannes dans une boucle
Code :
1
2
3
4
5
 
var colLen=document.getElementsByName['mauvaise'].length
 for (i=0;i<colLoen;i++){
      alert(document.getElementsByName['mauvaise'][i].value)
}
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 19h27   #3
Invité de passage
 
Inscription : mai 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 6
Points : 0
Points : 0
je ne comprend pas trop :

voici ce que j'ai mis dans mon code javascript à la place de ça :
Code :
1
2
3
4
5
6
7
8
9
10
 
(...)
 
if(formulaire.mauvaise[1].value.length < 1){
   alert('Le champ mauvaise réponse n°1 doit-être rempli !');
   formulaire.mauvaise[1].focus();
   return false;
}
 
(...)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
(...)
 
var colLen=document.fomrs['formulaire'].elements['mauvaise'].value).length
 
for (i=0;i<colLoen;i++){
   if(document.fomrs['formulaire'].elements['mauvaise'][i].value).length < 1) {
      alert('Le champ mauvaise réponse n°'i' doit-être rempli !');
      document.fomrs['formulaire'].elements['mauvaise'][i].focus();
      return false;
   }
}
 
(...)
j'ai aussi essayer ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
(...)
 
var colLen=document.getElementsByName['mauvaise'].length
 
for (i=0;i<colLoen;i++){
   if(document.getElementsByName['mauvaise'][i].length < 1) {
      alert('Le champ mauvaise réponse n°'i' doit-être rempli !');
      document.getElementsByName['mauvaise'][i].focus();
      return false;
   }
}
 
(...)
Je pense que je n'utilise pas bien ce que tu m'as donné car lorsque mais champs mauvaise[xx] ne sont pas remplis, le formulaire est quand même envoyé avec les champs vide !!!

Merci pour l'aide que tu m'apporte

A bientôt !
misterg94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 19h33   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 29 074
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 29 074
Points : 43 300
Points : 43 300
colLen != colLoen
desolé pour la faute de frappe ...
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 19h43   #5
Responsable JavaScript & AJAX
 
Avatar de vermine
 
Inscription : mars 2008
Messages : 2 436
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mars 2008
Messages : 2 436
Points : 4 886
Points : 4 886
Et

Code :
document.fomrs['formulaire']
Qui était en fait forms. Copier/coller le code qu'on vous donne c'est dément, mais le lire, c'est plus intelligent.
vermine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 20h08   #6
Invité de passage
 
Inscription : mai 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 6
Points : 0
Points : 0
en effet j'avais lu forms et non fomrs !
je ferai plus attention la prochaine fois !

je vais corrigé ça tout de suite !
misterg94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 21h00   #7
Invité de passage
 
Inscription : mai 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 6
Points : 0
Points : 0
Après réssayer le deux méthodes en corrigeant les fautes de frappe, le problème et toujours apparrant, pire avec ces codes, même les deux premiers champs (bonne_rep et question) ne sont plus vérifiés.

D'autres idées pour résoudre ce soucis ?
misterg94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 21h56   #8
Responsable JavaScript & AJAX
 
Avatar de vermine
 
Inscription : mars 2008
Messages : 2 436
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mars 2008
Messages : 2 436
Points : 4 886
Points : 4 886
Pourriez-vous nous montrer votre nouveau code ?
vermine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 22h15   #9
Invité de passage
 
Inscription : mai 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 6
Points : 0
Points : 0
Voici le code des deux versions :

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
<script language="javascript" type text/javascript>
function verif_vides(formulaire) {
 
if(formulaire.question.value.length < 1) {
alert('Le champ question doit-être rempli !');
formulaire.question.focus();
return false;
}
 
if(formulaire.bonne_rep.value.length < 1) {
alert('Le champ bonne réponse doit-être rempli !');
formulaire.bonne_rep.focus();
return false;
}
 
var taille=document.getElementsByName['mauvaise'].length;
for (i=0;i<taille;i++){
   if(document.getElementsByName['mauvaise'][i].length < 1) {
      alert('Le champ mauvaise réponse n°'i' doit-être rempli !');
      document.getElementsByName['mauvaise'][i].focus();
      return false;
   }
}
 
return true;
}
</script>
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
<script language="javascript" type text/javascript>
function verif_vides(formulaire) {
 
if(formulaire.question.value.length < 1) {
alert('Le champ question doit-être rempli !');
formulaire.question.focus();
return false;
}
 
if(formulaire.bonne_rep.value.length < 1) {
alert('Le champ bonne réponse doit-être rempli !');
formulaire.bonne_rep.focus();
return false;
}
 
var taille=document.fomrs['formulaire'].elements['mauvaise'].length;
for (i=0;i<taille;i++){
   if(document.forms['formulaire'].elements['mauvaise'][i].value).length < 1) {
      alert('Le champ mauvaise réponse n°'i' doit-être rempli !');
      document.forms['formulaire'].elements['mauvaise'][i].focus();
      return false;
   }
}
 
return true;
}
</script>
merci
misterg94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 08h25   #10
Responsable JavaScript & AJAX
 
Avatar de vermine
 
Inscription : mars 2008
Messages : 2 436
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mars 2008
Messages : 2 436
Points : 4 886
Points : 4 886
Bonjour,

Je mets en rouge ce que j'ai repéré, en en vert une explication:

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
<script language="javascript" type text/javascript>
function verif_vides(formulaire) {
 
if(formulaire.question.value.length < 1) { //Après vous utilisez une autre technique pour retrouver le champ. Soyez homogène dans votre code.
alert('Le champ question doit-être rempli !');
formulaire.question.focus();
return false;
}
 
if(formulaire.bonne_rep.value.length < 1) { //Pareil
alert('Le champ bonne réponse doit-être rempli !');
formulaire.bonne_rep.focus();
return false;
}
 
var taille=document.fomrs['formulaire'].elements['mauvaise'].length;//Un oubli. ;)
for (i=0;i<taille;i++){
   if(document.forms['formulaire'].elements['mauvaise'][i].value).length < 1) {
      alert('Le champ mauvaise réponse n°'i' doit-être rempli !');//Le '°' pourrait peut-être poser problème un jour, mais la concaténation est le '+' : ...n°' + i + ' doit...
      document.forms['formulaire'].elements['mauvaise'][i].focus();
      return false;
   }
}
 
return true;
}
</script>
vermine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 09h08   #11
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 12 872
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 12 872
Points : 30 129
Points : 30 129
Et aussi :
Code :
<script language="javascript" type text/javascript>
Il manque = et les quotes et language est deprecated
Code :
<script type="text/javascript">
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 10h55.


 
 
 
 
Partenaires

Hébergement Web