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 :

Parcours dynamique des éléments d'un form


Sujet :

JavaScript

  1. #1
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut Parcours dynamique des éléments d'un form
    Bonjour tout le monde.

    J'ai une fenêtre divisé en deux Frame (je sais c'est pas génial, mais bon je fais de la maintenance, et j'ai pas le temps de tout changé...) qui contiennent chacun un formulaire. Les deux sont issus de page JSP.
    Mon premier formulaire contient 2 liste déroulantes et le bonton "Envoyer". Le choix dans les listes déroulantes influence l'apparition de telle ou telle JSP dans la deuxième frame. Et cette deuxième frame (qui comporte une liste d'option) peut être éditée par mon utilisateur, afin de rajouter des options. Ppour que ma servlet appelée par le bouton envoyer puisse toujours gérer toutes les options j'impose à mon utilisateur une convention de nommage de ses nouveaux champs d'options, comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <INPUT type='text' name='filter_nomDuFiltre'...>
    Il faut également qu'il insère dans le premiers frame un champ hidden correspondant à cette nouvelle option, pour la soumettre en get à ma servlet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <INPUT type='hidden' name='filter_nomDuFiltre value="">
    Ce que je n'arrive pas à faire, c'est copier de manière automatique (itérative...) tous les champs qui porte le nom filter_XXX de ma seconde frame vers la première.
    J'ai essayé quelque chose du genre,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        for(int i=0; i<parent.frames['frameOptions'].document.forms['OPTIONS'].elements.length; i++){
            obj=parent.frames['frameOptions'].document.forms['OPTIONS'].elements[i];
            if(obj.name.substring(0, "filter_".length == "filter_"){ 
                parent.frames['framePpal'].document.forms['OPTIONS'].elements[obj.name] = obj;
            }
        }
    mais ça ne marche pas (et ne m'affiche aucun message évidement, pour faciliter la chose !)

    Est-ce que quelqu'un aurait une idée SVP ?
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 289
    Points
    3 289
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var Window = parent.frames['frameOptions'];
    var Document = (Window.document)?(Window.document):(Window.contentDocument);
    var Form = Document.forms[""];
    var Elements = Form.elements;
    ??
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  3. #3
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut
    Je viens d'essayer ce code... mais ça ne marche pas mieux !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        var Window = parent.frames['frameOptions'];
        var Document = (Window.document)?(Window.document):(Window.contentDocument);
        var Form = Document.forms["OPTIONS"];
        var Elements = Form.elements;
     
        //Retrieve all filter parameters names and values
        for(int i=0; i<Elements.length(); i++){
            obj=Elements[i];
            alert("obj.name "+obj.name);
        }
    C'est bien ce que tu me suggérais Fremy ?
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

  4. #4
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 289
    Points
    3 289
    Par défaut
    Pardon, en me relisant, je me rend compte que j'ai écrit n'impote quoi
    La fatigue surement ! Et ca ?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var Context = parent.frames['frameOptions'];
    var Window = (Context.window)?(Context.window):(Context.contentWindow);
    var Document = (Window.document)?(Window.document):(Window.contentDocument);
    var Form = Document.forms["OPTIONS"];
    var Elements = Form.elements;
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  5. #5
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut
    Pas mieux...

    En fait, ce qui me laisse pantois, c'est que j'ai mis un alert() juste avant... et qu'il ne s'affiche pas. Bien sûr, il s'affiche dès que je commente m'a boucle.

    EDIT: D'ailleurs au passage, sur Elements, il faut que je fasse un length ou un length() ?
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

  6. #6
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 289
    Points
    3 289
    Par défaut
    Citation Envoyé par leminipouce
    Pas mieux...

    En fait, ce qui me laisse pantois, c'est que j'ai mis un alert() juste avant... et qu'il ne s'affiche pas. Bien sûr, il s'affiche dès que je commente m'a boucle.

    EDIT: D'ailleurs au passage, sur Elements, il faut que je fasse un length ou un length() ?
    1) Que dit la console FireFox ?
    2) Array.length
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  7. #7
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut
    OK, merrci pour la confirmation sur le length.

    Sinon, hélas, la console Firefox ne dit rien. Je fais de la maintenance, et le site a été conçut pour IE. C'est le seul navigateur qui arrive à l'exploiter...
    Corriges moi si je me trompe, mais à ma connaissance il n'y a pas d'équivalent à cette console sous IE.

    EDIT : En fait, j'utilise une surcouche de IE pour le rendre moins pire : AM Browser. Je suis en train de chercher une éventuelle console similaire à celle de Firefox.
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

  8. #8
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 289
    Points
    3 289
    Par défaut
    Il doit y avoir une faute de syntaxe qqpart...
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  9. #9
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut
    Evidement... tu as raison !

    J'ai oublié de fermer la parenthèse de mon substring... [no comment].

    Bon résultat pour éviter que d'autres s'arrachent les cheveux... voici mon 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
        var Context = parent.frames['frameOptions'];
        var Window = (Context.window)?(Context.window):(Context.contentWindow);
        var Document = (Window.document)?(Window.document):(Window.contentDocument);
        var Form = Document.forms["OPTIONS"];
        var Elements = Form.elements;
     
        var i = 0;
        while(i < Elements.length){
            obj=Elements[i];
            i = i + 1;
            if(obj.name.substring(0, "filter_".length) == "filter_"){
                if(parent.frames['dataSelection'].document.forms['SELECTION'].elements[obj.name]){
                    parent.frames['dataSelection'].document.forms['SELECTION'].elements[obj.name].value = obj.value;
                }
            }
        }
    Et merci encore à FremyCompany.
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

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

Discussions similaires

  1. Centrage des éléments d'un form WPF
    Par Ylmith dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/03/2013, 15h48
  2. Relier des données sur des éléments d'une form
    Par Takumi dans le forum Windows Forms
    Réponses: 5
    Dernier message: 18/01/2010, 16h06
  3. [vb.net] Ajustement automatique des éléments d'une form
    Par solid_sneak06 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/03/2009, 18h21
  4. Disposition dynamique des éléments enfants dans un StackPanel
    Par FRED.G dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 02/02/2009, 12h03
  5. Parcours dynamique des champs
    Par cosmos38240 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/11/2005, 14h54

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