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 :

Verification du remplissage de plusieurs champs [Fait]


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Points : 42
    Points
    42
    Par défaut Verification du remplissage de plusieurs champs
    Bonjour,

    Toujours avec le tutoriel j'ai trouvé comment vérifier si à la validation du formulaire un champ a été rempli. J'ai essayé avec mes maigres connaissances de l'appliquer à plusieurs champs, sans succès. J'ai 8 input et un textarea à vérifier.

    Le code du tuto:
    <script type='text/javascript'>
    function verif(idInput, valeurVide, descriptionChamp)
    {
    var input = document.getElementById(idInput);

    if (input.value == valeurVide) {
    input.focus();
    alert('Vous devez renseigner le champ "' + descriptionChamp + '".');
    } else
    alert('Le champ "' + descriptionChamp + '" est bien rempli.');
    }
    </script>
    <input id="text9" type="text"/>
    <input onclick="verif('text9', '', 'nom du champ texte');"
    value="verif('idInput', '', 'nom du champ texte')" type="button"/>
    <select id="select9">
    <option value="0">- Faites un choix -</option>
    <option value="1">Choix 1</option>
    <option value="2">Choix 2</option>
    <option value="3">Choix 3</option>
    </select>
    <input onclick="verif('select9', 0, 'nom du champ select');"
    value="verif('idInput', 0, 'nom du champ select')" type="button"/>
    J'ai donc appelé l'Id de chacun de mes champs, j'ai copié-modifié
    var input = document.getElementById(idInput);
    pour chaque valeur.

    J'affecte 0 à une variable et je fais un "if" pour chaque champ. S'il est vide je rajoute 1 à la variable.

    Enfin, je teste la variable. Si elle est >0 j'envoie un message d'erreur.


    Seulement ça ne fonctionne pas.

    Je fais donc appel à vous pour me mettre dans la voie.
    Sans forcément me mâcher le code, ça m'aiderait beaucoup que vous m'indiquiez dans quelle voie je dois chercher.

    Merci d'avance.

  2. #2
    Membre expérimenté
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Points : 1 316
    Points
    1 316
    Billets dans le blog
    1
    Par défaut
    Yop!

    Lorsque je dois vérifier plusieurs champs, j'utilise un truc du genre:

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    <html>
    <head>
    <script type="text/javaScript">
    thenames = new Array("nom", "prenom", "continent");
    thetitles = new Array("Nom", "Prénom", "Continent");
    function checkinput()
    {
      fieldstring ="";
      for (var i = 0; i < thenames.length; i++)
        {
        if (eval("document.forms[0]." + thenames[i] + ".value")=="")
          {
    	fieldstring = fieldstring + thetitles[i] + ", \n"
    	}
        }
      if (fieldstring!="")
        {
        alert("Vous devez compléter le(s) champ(s) suivant(s) : \n\n" + fieldstring + "\n " );
        }	
      else
        {
        document.forms[0].submit();
        }
    }
    </script>
    </head>
     
    <body>
     
    <form action="quelquechose.php" method="post">
    Nom:<input type=text name='nom' value=''>
    <br>
    Prénom:<input type=text name='prenom' value=''>
    <br>
    Continent:<select name='continent'>
    <option value='' selected>Sélectionnez un continent</option>
    <option value='Afrique'>Afrique</option>
    <option value='Amérique du Nord'>Amérique du Nord</option>
    <option value='Amérique du Sud'>Amérique du Sud</option>
    <option value='Asie'>Asie</option>
    <option value='Europe'>Europe</option>
    <option value='Océanie'>Océanie</option>
    </select>
    <br>
    <input type=button value="Go!"  onclick="checkinput()">
    </form>
     
    </body>
    </html>
    Ca évite d'avoir un alert() par champ.
    Un ascenseur est une machine qui passe quand même la moitié de son temps à descendre.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 397
    Points : 430
    Points
    430
    Par défaut
    Pour les vérifications de formulaires voir ici dans les contributions

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Points : 42
    Points
    42
    Par défaut
    Merci beaucoup, je vais essayer de travailler à partir de ça.

    Dès que ça fonctionne je clique sur "résolu"

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Points : 42
    Points
    42
    Par défaut
    Le code de ryan est parfaitement adapté à mes besoins, simple à inclure, et en plus modulable à souhait. super!

    Par contre va falloir que je réfléchisse à la raison pour laquelle je reçois mon message par mail en double.

    Merci beaucoup!


    Ju

  6. #6
    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 637
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    si tu avais suivi le tuto des contributions je penses que tu n'aurais pas le message en double ...

    la validation ne doit pas etre blqouée en cas d'echec de verification .
    il faut passer par le onsubmit
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Points : 42
    Points
    42
    Par défaut
    Je crois que mon message en double vient d'ailleurs, je l'ai déjà eu avant.

    En revanche il est vrai que j'ai reçu un message alors que les champs n'étaient pas tous remplis.

    Si j'arrivais à comprendre quelque chose au tuto des contributions je l'aurais suivi, mais je ne comprends même pas pourquoi tout est contredit à chaque message...

  8. #8
    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 637
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    il n'y a rien de contredit, suis les posts ou je parle du principe de base ...
    une fois que tu auras compris comment inhiber l'envoi avec un return false dasn le onsubmit tu auras gagné la partie ...
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Points : 42
    Points
    42
    Par défaut
    Moui... il m'envoie les nouvelles données... et en même temps les données du test précédent.

    Cela vient du fait que le mailer est mis à l'ouverture de la page et que mon formulaire rappelle la page. En reloadant ma page je réexécute le mailer averc les anciennes données... forcément...

    Je vais tenter de faire autrement

  10. #10
    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 637
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    ben faut lancer le mailer uniquement après la validation du form ...
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Points : 42
    Points
    42
    Par défaut
    J'avais testé ton exemple, et il m'envoyait ""ok tout est bon ! Envoyé" lorsque je ne remplissais pas les champs, du coup j'ai essayé celui de ryan.

    Et oui, mais j'ai beaucoup galéré et je me suis battu avant de réussir à avoir un envoi de mails qui fonctionne. Or, en passant avant le <html> ça fonctionnait justement.

    Je dois tout repenser là

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Points : 42
    Points
    42
    Par défaut
    Bon, je vais créer une autre appelée à la validation du formulaire (testé), qui lancerait le mailer et avertirait que le mail a été envoyé, puis se fermerait automatiquement au bout de quelques secondes.
    Ca mévitera les redondances et ça sera bien plus propre.

    D'abord, trouver l'équivalent du taget='blank' lorsque la page est lancée par le form.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    il n'y a rien de contredit, suis les posts ou je parle du principe de base ...
    une fois que tu auras compris comment inhiber l'envoi avec un return false dasn le onsubmit tu auras gagné la partie ...

    Ben justement, la méthode proposée n'inhibe rien du tout, même en la suivant scrupuleusement.

    Ma fonction:
    <script type="text/javascript">
    function VerifForm(){ var AllIsOk=0;

    // ici une serie de tests : (exmple si les champs sont vides)
    if(document.forms['Formulo'].elements['champ1'].value==''){AllIsOk++;}
    if(document.forms['Formulo'].elements['champ2'].value==''){AllIsOk++;}
    if(document.forms['Formulo'].elements['champ3'].value==''){AllIsOk++;}
    if(document.forms['Formulo'].elements['champ4'].value==''){AllIsOk++;}
    if(document.forms['Formulo'].elements['champ5'].value==''){AllIsOk++;}
    if(document.forms['Formulo'].elements['champ6'].value==''){AllIsOk++;}
    if(document.forms['Formulo'].elements['champ7'].value==''){AllIsOk++;}
    if(document.forms['Formulo'].elements['champ8'].value==''){AllIsOk++;}

    //ici le retour de la fonction

    if(AllIsOk==0){return true;}
    else{
    alert('veuillez remplir tous les champs');
    return false}
    }</script>
    Mon appel dans le form:

    <Form action="formulo.asp" method=POST onsubmit="return VerifForm()">
    J'appelle une page sur laquelle est exécuté le mailer.

    J'ai vérifié, les noms des champs sont corrects, j'ai essayé avec des id au cas où, rien n'y fait: ma page est toujours appelée même lorsqu'aucun champ n'est rempli

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Points : 42
    Points
    42
    Par défaut
    en fait, j'ai bien l'impression que ça n'appelle même pas la fonction VerifForm().

    Pourtant elle est déclarée correctement dans mon <head>

  15. #15
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par Tellounet Voir le message
    en fait, j'ai bien l'impression que ça n'appelle même pas la fonction VerifForm().
    on peut voir le code de ton bouton submit ?

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  16. #16
    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 637
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    mouaip ça sent la soumission dynamique et pas avec un bouton de type submit ...
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  17. #17
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    mouaip ça sent la soumission dynamique et pas avec un bouton de type submit ...
    Ou le chti onclick qui traîne toujours dans le bouton ...
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Points : 42
    Points
    42
    Par défaut
    <input type=submit value="Envoyer le message">
    Tout bêtement

  19. #19
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Si ta fonction n'est pas appelée, c'est peut être simplement que tu as une autre erreur JS, dans une autre partie du code, et qui plante au chargement.

    Et quand JS planté, JS plus marcher

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Points : 42
    Points
    42
    Par défaut
    Ben heu... le seul autre js que j'ai sur cette page c'est:

    <script type="text/javascript" src="csshorizontalmenu.js"></script>
    qui fonctionne très bien, et sur toutes mes pages.

    Et des inserts d'éléments qui ne posent aucun problème non plus.

    Vous voudriez peut-être le code entier de ma page?

    En passant, comme j'ai testé pas mal de chose, mes input ont un name et un id. Mais j'ai testé en appelant l'un et l'autre, pas de différence

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AC-2007] Remplissage de plusieur champs selon valeur.
    Par adelion dans le forum Access
    Réponses: 2
    Dernier message: 26/04/2015, 14h43
  2. Réponses: 0
    Dernier message: 28/02/2008, 14h46
  3. [CR] Groupement dynamique sur plusieurs champs paramètrés
    Par CDRIK dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 07/06/2004, 17h55
  4. recuperer les id sur plusieurs champs
    Par matN59 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/03/2004, 10h23
  5. [CR9] Plusieurs champs dans details
    Par maxxou dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 28/01/2004, 13h35

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