IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Test des champs vide d'un formulaire !


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 15
    Points
    15
    Par défaut Test des champs vide d'un formulaire !
    Bonjour à tous !

    Voici un fragment de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !!!

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    Première remarque:
    Adopte une syntaxe qui t'éviteras des problèmes dans l'avenir




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.fomrs['formulaire'].elements['mauvaise']
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByName['mauvaise']

    tu recupères donc une collection d'objets :
    et tu la scannes dans une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var colLen=document.getElementsByName['mauvaise'].length
     for (i=0;i<colLoen;i++){
          alert(document.getElementsByName['mauvaise'][i].value)
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    je ne comprend pas trop :

    voici ce que j'ai mis dans mon code javascript à la place de ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    colLen != colLoen
    desolé pour la faute de frappe ...

  5. #5
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 915
    Points
    79 915
    Par défaut
    Et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    en effet j'avais lu forms et non fomrs !
    je ferai plus attention la prochaine fois !

    je vais corrigé ça tout de suite !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    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 ?

  8. #8
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 915
    Points
    79 915
    Par défaut
    Pourriez-vous nous montrer votre nouveau code ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Voici le code des deux versions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  10. #10
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 915
    Points
    79 915
    Par défaut
    Bonjour,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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>

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Et aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script language="javascript" type text/javascript>
    Il manque = et les quotes et language est deprecated
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript">

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/01/2015, 09h02
  2. [AC-2010] Controle des champs vides dans un formulaire
    Par prosper02 dans le forum VBA Access
    Réponses: 3
    Dernier message: 06/07/2013, 00h04
  3. formulaire access sur des champs vides
    Par qmike dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 28/05/2009, 10h20
  4. soumettre un formulaire avec des champs vides
    Par pesti dans le forum GWT et Vaadin
    Réponses: 11
    Dernier message: 17/03/2009, 15h04
  5. test des champs d'un formulaire
    Par msahmi dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/02/2008, 13h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo