Donnez vie à vos documents numériques !
 

Lier les choix possible d’une liste déroulante à une deuxième. RÉSOLU

abracadabraPDF Forums PDF – Général Lier les choix possible d’une liste déroulante à une deuxième. RÉSOLU

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #43761
    jmroyer
    Invité

    Bonjour,

    Dans un formulaire où l’on aurait une première liste déroulante « Pays » et ensuite une deuxième liste déroulante « Villes » qui serait lié au choix faite dans la première. Comment dois-je procéder pour introduire la condition que si l’utilisateur choisit « Italie » alors dans « Villes », affiche comme choix possibles « Rome », « Florence, « Naples ». Par curiosité, jusqu’où on peut pousser la « cascade » de listes déroulantes ?

    Merci.

Affichage de 13 réponses de 51 à 63 (sur un total de 63)
  • Auteur
    Réponses
  • #50508
    Merlin
    Maître des clés

    Tout à fait d’accord !
    :bravo:

    #50509
    pipotofluto
    Membre

    Dans cette version (à tester), vous trouverez la méthode définissant les listes déroulantes avec des valeurs d’export en clair (plus pratique pour récupérer les données sur un serveur). Attention, les listes sont à compléter pour fonctionner dans tous les cas de figure. L’initialisation peut être lancée en ouverture de page et on peut donc supprimer le bouton.

    Bonjour,

    J’ai adapté cette solution à ce que je souhaite faire, mais uniquement pour une liste déroulante mère et une fille (pas de petite fille).

    ça a l’air de fonctionner

    :bravo:

    mon problème est que dans le formulaire que je suis en train de créer je dois faire d’autres couples dans liste déraoulante de ce style.

    Comment puis je en rajouter ?

    En vous remerciant par avance.

    :bonjour:

    #50510
    Merlin
    Maître des clés

    Et bien, sous réserve de confirmation par Alex, je dirais qu’il suffit de modifier le nom des variables utilisées dans le script, en les incrémentant par exemple.
    :joker:

    #50511
    alex
    Membre

    Oui, il faut réouvrir le capot et généraliser à n hiérarchies mères/filles/petites filles…  Il faudra d’une part patienter un peu, d’autre part se contenter d’une solution acroForm…

    #50512
    Anxionet
    Membre

    Bonjour;
    J’essai d’utiliser ce script pour une formulaire avec une seule couple. Ma question est très simple, peut être pour vous, mais je n’y connais pas beaucoup à ce sujet.
    Où je dois coller le premier script?
    Le deuxième pour le remplissage de la liste fille, j’ai vu qui va sur l’onglet format, mais pour le premier je ne vois pas où le coller. Merci de votre aide !

    Nous sommes donc sous Acrobat PRO (versions 7,8,9), le formulaire a été développé avec AcroForm.
    Deux scripts font le travail:
    Le premier, (qui ne travaille qu’une fois à l’ouverture du document par exemple) assure le remplissage des items des sélecteurs (listes déroulantes mères) ainsi que la construction des tables Liste(x,y)
    x est l’index du couple mere/fille.
    y est l’index de l’occurence mère.

    function RemplissageMere()
    {
    //Remplissage du premier menu déroulant Liste1:
    console.clear();
    //Paramétrage du nombre de couples mere/fille du document
    NbreCouples=5;
    //On définit les tableaux:
    Selecteur=new Array();
    Liste=new Array();
    indexCouple=1;
      while (indexCouple  {
      Selecteur[indexCouple]=new Array();
      Liste[indexCouple]=new Array();
      indexCouple=indexCouple+1;
      }
    //On définit les listes mères/filles (autant de Listes filles que d’items du Selecteur mère), le nombre d’items est libre
    //Premier couple par exemple:
    Selecteur[1]=[« Garçons », »Filles »]
    Liste[1][0]=[« Jean », »Alain », »François », »Pierre », »Damien », »Alex », »Mike »]
    Liste[1][1]=[« Brigitte », »Nicole », »Marie », »Julie », »Cécile », »Marion », »Diane », »Judith », »Samia », »Colette », »Christine »]
    //Fin du premier couple
    //Second couple pour exemple:
    Selecteur[2]=[« France », »Allemagne », »Italie », »Espagne », »Belgique »]
    Liste[2][0]=[« Paris », »Bordeaux », »Lille », »Strasbourg », »Lyon », »Grenoble »]
    Liste[2][1]=[« Berlin », »Bonn », »Munich », »Brême »];
    Liste[2][2]=[« Rome », »Milan », »Gênes », »Bologne »];
    Liste[2][3]=[« Madrid », »Barcelonne », »Valence »];
    Liste[2][4]=[« Bruxelles », »Gand », »Namur »];
    //Fin du second couple
    //Couple 3 pour exemple:
    Selecteur[3]=[« Europe », »Amérique »]
    Liste[3][0]=[« Bruxelles », »Paris », »Oslo », »Londres », »Berlin », »Madrid », »Rome », »Athène », »Milan »]
    Liste[3][1]=[« New-York », »Montreal », »Toronto », »La Paz », »Panama »];
    //Fin du couple 3.
    //Couple 4 pour exemple:
    Selecteur[4]=[]
    Liste[4][0]=[]
    //Fin du couple 4
    //Couple 5 pour exemple:
    Selecteur[5]=[];
    Liste[5][0]=[];
    //Fin du couple 5
    //………………………..Autres définitions si nécessaire.
    //Remplissage des listes mères (sélecteurs)
    indexCouple=1;
      while (indexCouple  {
      this.getField(« ListeMere »+indexCouple).clearItems();
      this.getField(« ListeFille »+indexCouple).clearItems();
      indexItem=0;
        while(indexItem    {
        this.getField(« ListeMere »+indexCouple).insertItemAt(Selecteur[indexCouple][indexItem],indexItem,indexItem)
        indexItem=indexItem+1;
        }
      indexCouple=indexCouple+1;
      }
    //Fin remplissage Liste mère
    }

    Un second script général, lançé par les sélecteurs, met à jour les listes filles:
    Attention à son mode de lancement.onglet Format>
    Catégorie de format>Personnalisé
    Script de touches personnalisé>

    function RemplissageFille()
    {
    console.clear();
    //On définit les items de Liste fille de rang indexCouple à chaque fois que le sélecteur mère est solliscité:
    //Nom du sélecteur solliscité:
    NomSelecteur=event.target.name;
    console.println(« Sélecteur activé: »+NomSelecteur)
    //Détermination du rang:
    longueuralpha= »ListeMere ».length;
    console.println(« Longueur de la partie alpha: »+longueuralpha)
    indexCouple=NomSelecteur.substring(longueuralpha,NomSelecteur.length);
    console.println(« index du couple: »+indexCouple)
    ffille=this.getField(« ListeFille »+indexCouple);
    console.println(« Liste mise à jour: ListeFille »+indexCouple)
    ffille.delay=true;
    ffille.clearItems();
    indexItem=0;
    while(indexItem {
    ffille.insertItemAt(Liste[indexCouple][event.changeEx][indexItem],indexItem,indexItem)
    indexItem=indexItem+1;
    }
    ffille.currentValueIndices=0;
    ffille.delay=false;
    }

    #50513
    Merlin
    Maître des clés

    Bonjour.

    Comme leur premier mot l’indique, ces scripts sont des fonctions.
    Ce qui veut dire qu’on doit préalablement les déclarer pour pouvoir les utiliser.

    Pour ça il suffit de copier ces deux scripts en script de document, ce qui les déclare-initialise à l’ouverture du document.
    Voir absolument : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/
    et : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/lordre-dexecution-des-evenements-dans-les-champs-de-formulaire-pdf/

    Ensuite, dans le menu déroulant, ou dans un champ, il faut juste placer l’appel de la fonction là où c’est indiqué.
    Par exemple :

    Code:
    RemplissageMere();

    ou

    Code:
    RemplissageFille();

    :Smiley01:

    #50514
    ln_0358
    Membre

    Bonjour à vous,

    Avant tout merci pour tous les éléments apportés par ce fil de discussion. je n’y connais rien mais j’ai pu adapter les scripts à nos besoin grâce aux explications.
    Mais je bute sur un dernier point (…et je sais que ma question va énerver les informaticiens, mille excuses)

    Alors voilà : l’exemple « listesliees3niveauxAcroformAvecSubmit2.pdf » sans le bouton de rechargement des listes conviendrait tout a fait pour nous (je produis un formulaire pour des utilisateurs qui sont TRES VITE destabilisés avec l’outil informatique, il faut que cela soit le plus simple possible sinon, ils impriment et remplissent le formulaire à la main), or cet exemple ne peut être qu’imprimé car les données sont réinitialisées même après enregistrement (lorsqu’on réouvre le formulaire). Nous voudrions récupérer des fichiers numériques et non pas rematérialiser le formulaire après saisie.

    …alors à tout hasard, serait-il possible par un quelconque moyen de supprimer la fonction initialisation avec un bouton « enregistrer » spécial par exemple ??? ou par une tout autre méthode que vous m’indiquerez afin que le destinataire du formulaire puisse lire les choix saisis par l’utilisateur et que celui ci n’ait pas à manuellement recharger les listes pour compléter le formulaire ??

    Mille mercis pour vos pistes ou avis sur ce problème !

    #50515
    Merlin
    Maître des clés

    Bonjour et bienvenue.

    Peux tu partager ton formulaire ?
    Car là tu parles de choses bien lointaines dans ma mémoire et je ne sais pas retrouver le PDF auquel tu fais allusion.
    :geek:

    #50516
    bebarth
    Maître des clés

    bonjour,
    d’après  ce que je comprends, tu veux aplatir le formulaire ! c’est cela ???
    pour aplatir tous le champs du fichier, la commande est :
    this.flattenPages();
    on peut aplatir certaines pages d’un fichier par contre, je ne pense pas que l’on puisse aplatir uniquement certains champs d’une page.
    @+
    :bonjour:

    #50517
    Merlin
    Maître des clés

    Adobe Acrobat Reader ne permet pas d’aplatir les champs de formulaire, même si le PDF est « Reader Extended ».

    (En fait si on peut, mais ça requiert une activation de niveau 4, qui coûte un bras et demi, non disponible dans Acrobat et qui nécessite un Serveur Adobe LiveCycle. Voir : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/pdf-reader-extended/ )

    #50518
    Alex WIND
    Membre

    Bonjour à tous.
    Je déterre un peu ce post.
    Ma question va peut-être sembler débile.
    Je souhaite faire des menus déroulant comme avec sous menu qui s’ouvrent en fonction des sélections du menu mère comme indiqué dans ce post.
    Plusieurs personnes parlent de fichiers exemple, mais je n’arrive pas à récupérer les exemples qui pourraient m’aider.
    Bien à vous.
    PS : les fichiers exemples m’aideront à progresser car j’ai pas de compétence en js et j’ai pas vraiment le temps de les acquérir.
    Pour l instant j’ai réussi à faire des formulaires avec Adobe Pro mais pas de double menu déroulants liés entre eux.
    Merci par avance pour votre aide.

    #50519
    Merlin
    Maître des clés

    Bonjour, bienvenue et bonne année

    Il me semble (de mémoire…) que les non-inscrits au forum ne peuvent pas accéder aux pièces jointes des messages, donc maintenant que tu l’es tu peux.
    On parle justement du sujet qui t’intéresse dans cette discussion : https://abracadabrapdf.net/forum/index.php/topic,3823.0.html
    :Smiley15:

    #50520
    Alex WIND
    Membre

    Merci pour ton aide Merlin et bonne année à toi et à tous.
    Je vais aller jeter un œil sur la discussion.

Affichage de 13 réponses de 51 à 63 (sur un total de 63)
  • Vous devez être connecté pour répondre à ce sujet.