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 :

accès à plusieurs champs de meme nom


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 27
    Points : 19
    Points
    19
    Par défaut accès à plusieurs champs de meme nom
    Bonjour,

    Je génère un formulaire de saisie de plusieurs lignes identiques. Pour éviter d'avoir 50 noms de variables différents je réutilise le même nom de champ pour chacune des lignes (le nom des variables n'est pas sufixé de l'indice de ligne). Tout fonctionne bien pour la transmission entre les pages ou ces champs sont considérés comme des tableaux. Par contre, en javascript je ne parviens pas à accéder à ces champs pour effectuer un contrôle de saisie.

    un extrait du formulaire :

    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
     
     <tr> 
                   <td> 
                      <div align="left"><input type="text" name="numCmd" size="50" maxlength="50" value=""></div>
                   </td>
                   <td> 
                      <div align="left"><input type="text" name="comCmd" size="50" maxlength="50" value=""></div>
     
                   </td>
                </tr>
     
                <tr> 
                   <td> 
                      <div align="left"><input type="text" name="numCmd" size="50" maxlength="50" value=""></div>
                   </td> 
                   <td> 
                      <div align="left"><input type="text" name="comCmd" size="50" maxlength="50" value=""></div>
                   </td>
     
                </tr>
    Tentatives d'accès infructueuses (appro est le nom du formulaire):
    document.appro.numcmd[0].value;
    document.forms["appro"].elements["numcmd"][0].value

    Voyez-vous comment faire pour accéder aux valeurs de ces champs ?

    Merci pour votre aide.

  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 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByName["numcmd"][0].value

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    Merci pour ton aide spacefrog mais malheureusement cette solution ne fonctionne pas non plus.

    Il y a moyen de s'en sortir en utilisant les indices des éléments du formulaire mais cela ne s'avère pas "très propre" comme développement je trouve.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
          for (var i=0; i<50;i++)
          {
             // on calcule l'indice des différents n° de commande
             idx = 1 + (i * 4)
             if (document.forms["appro"].elements[idx].value != "")
             {
                //contrôles
             }
          }
    Y a t'il une meilleure option ?

    Merci en tout cas.

  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 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    je ne voudrais pas te contrarier... mais le code tu as mis n'a rien a voir avec celui que j'ai proposé ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doucment.getElementsByName('???')[indice].value

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    Oui, la solution que tu as proposé ne semblant pas fonctionner, le code que je présente est une solution que j'ai trouvé pour accéder aux champs (elle fonctionne et je l'indique à destination de ceux qui rencontreraient le même problème que moi). Mais comme je l'indiquais auparavant, je ne la trouve pas très satisfaisante et je voudrais savoir s'il n'existe pas un meilleur moyen de procéder.

    Merci pour ton aide.

  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 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 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    getElementByName fonctionne ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      for (var i=0; i<50;i++)
          {
             // on calcule l'indice des différents n° de commande
             idx = 1 + (i * 4)
             if (document.getElementsByName("lenomduchamps").value != "")
             {
                //contrôles
             }
          }

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    oui
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementsByName("lenomduchamps").value
    fonctionne, par contre,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementsByName("lenomduchamps")[index].value
    ne fonctionne pas (du moins lorsqu'il s'agit de plusieurs input type="text" de même nom), et c'est justement de ça dont j'ai besoin.
    Tant pis, je me rabats sur la solution que j'ai mentionné supra.
    Merci pour ton aide en tout cas.

  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 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 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    désolé de te dire que tu te trompes lourdement ...
    getElemntsByName fonctionne parfaitement ...
    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
     
    <body>
    <input type='text' name='foo' value='un' /><br>
    <input type='text' name='foo' value='deux' /><br>
    <input type='text' name='foo' value='trois' /><br>
    <input type='text' name='foo' value='quatre' /><br>
    <input type='text' name='foo' value='cinq' /><br>
    <input type='text' name='foo' value='six' /><br>
    <input type='text' name='foo' value='sept' /><br>
    <input type='text' name='foo' value='huit' /><br>
     
    <select onchange="alert(document.getElementsByName('foo')[this.value].value)">
    <option value='0'>0</option>
    <option value='1'>1</option>
    <option value='2'>2</option>
    <option value='3'>3</option>
    <option value='4'>4</option>
    <option value='5'>5</option>
    <option value='6'>6</option>
    <option value='7'>7</option>
    </select>
    </body>
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select onchange="alert(document.getElementsByName('foo')[this.options[this.selectedIndex].value].value)">

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    Salut spacefrog,

    Autant pour moi, effectivement ton exemple fonctionne ... mais sous IE ! (IE 6 en l'occurrence)
    En fait je faisais mes tests sous Firefox 3, et cela ne marchait pas. Pris du doute j'ai donc créé une nouvelle page avec ton exemple : marche pas. Alors, comme tu m'affirmais que cela marchait je n'y comprenais plus rien ... j'ai donc fait le test sous IE et là ça fonctionne effectivement.

    Donc, il va falloir que je re qualifie le poste : il s'agit d'un problème sous FireFox ...

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    mea culpa ...
    Visiblement cela ne vient pas non plus de firefox, car sur un autre poste cela fonctionne ... Je vais vérifier mon paramétrage et les versions ...

  11. #11
    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 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    oui en general je teste sous IE et ffx avant de poster ...
    tu as visiblement un souci ailleurs ...
    peut etre un problème de balise non fermée ...

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    j'ai honte ... je testais "numcmd" en javascript et le nom du champ est "numCmd"
    IE ne semble pas s'arrêter à ce genre de détail mais FF si !

    Ps: lors de mon premier test de ton script sous FF je n'avais pas vider les traces et fermer le navigateur, il devait donc rester "bloqué" au niveau du javascript ...

    en tout cas un grand merci à toi

    bonne soirée

  13. #13
    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 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    javascript est case sensitive ...
    Encore une fois je pense que FFx est plus dans le vrai que IE

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 15/08/2011, 10h47
  2. [MySQL] un lien pour plusieurs champ du meme nom
    Par gastoncs dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/11/2007, 10h31
  3. [MySQL] Récuéprer deux champs au meme nom dans un Innerjoin
    Par easyjava dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 06/10/2006, 12h25
  4. [MySQL] Sélectionner deux champs du meme nom dans deux tables
    Par Msieurduss dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 14/06/2006, 22h54
  5. FieldbyName => deux champs du meme nom
    Par dacid dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/01/2005, 14h05

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