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éateurSujet
-
15 janvier 2010 à 14:30 #43761jmroyerInvité
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.
-
CréateurSujet
-
AuteurRéponses
-
13 mars 2012 à 14:46 #50508MerlinMaître des clés
Tout à fait d’accord !
:bravo:4 décembre 2012 à 15:01 #50509pipotoflutoMembreDans 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:
4 décembre 2012 à 17:46 #50510MerlinMaître des clésEt 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:4 décembre 2012 à 18:07 #50511alexParticipantOui, 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…
18 avril 2016 à 18:01 #50512AnxionetMembreBonjour;
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;
}18 avril 2016 à 19:16 #50513MerlinMaître des clésBonjour.
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:
25 mai 2016 à 14:58 #50514ln_0358MembreBonjour à 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 !
26 mai 2016 à 22:43 #50515MerlinMaître des clésBonjour 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:27 mai 2016 à 08:05 #50516bebarthMaître des clésbonjour,
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:27 mai 2016 à 09:39 #50517MerlinMaître des clésAdobe 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/ )
8 janvier 2020 à 12:13 #50518Alex WINDMembreBonjour à 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.8 janvier 2020 à 12:45 #50519MerlinMaître des clésBonjour, 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:8 janvier 2020 à 18:38 #50520Alex WINDMembreMerci pour ton aide Merlin et bonne année à toi et à tous.
Je vais aller jeter un œil sur la discussion. -
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.