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 #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.
-
CréateurSujet
-
AuteurRéponses
-
31 août 2010 à 19:24 #50483
Merlin
Maître des clésEn attendant, suite à un petit échange avec Merlin, je lui ai envoyé pour vérification une version du script qui préserve les valeurs d’export des menus déroulants lors des exports de données, toujours destinée aux formulaires créés sous Acrobat (AcroForm), ainsi qu’une maquette qu’il mettra en ligne si tout va bien.
J’ai tout bien reçu, c’est justement au programme de demain. A suivre…
:fleche:9 septembre 2010 à 13:13 #50484pepitos137
MembreJ’ai comme l’impression que le script sous Adobe Designer (pardon, Adobe LiveCycle Designer) est attendue… avec insistance?
J’aimerais savoir si l’attente va être encore long ?
Pepitos
11 septembre 2010 à 10:49 #50485alex
ParticipantAttention: Acrobat PRO et LiveCycle Designer sur Pc uniquement.
Voici la première partie de la réponse…
La maquette jointe montre :
1-comment remplir les items d’une liste déroulante à partir d’un tableau après tri des données.
2-Comment effacer les items de cette liste.
Par ailleurs on voit comment faire pour atteindre les objets du formulaire et afficher des alertes (deux méthodes).
Pour voir les scripts, il faut bien sûr travailler sur Pc et ouvrir LiveCycle Designer à partir d’Acrobat PRO: Formulaires>Modifier le formulaire dans Designer, puis cliquer su l’onglet Gabarits et chaque bouton lançant un script JavaScript client.
Pour ne pas ouvrir la console lors de l’exécution des scripts, passer Console.show() en commentaire.
Pour comparer les scripts JavaScript d’Acrobat (AcroForm) et de Designer se référer à:
LiveCycleDesigner ES2 Scripting Basics
où il y a un tableau de conversion de scripts très utile.Je n’oublie pas, Pepitos, l’objectif de la liste liée, et vu le nombre de téléchargements de l’exemple sous Acrobat, il y a un record à battre!
Nota: non réalisble avec Scribus.
[attachment deleted by admin]
11 septembre 2010 à 11:12 #50486Merlin
Maître des clésvu le nombre de téléchargement de l’exemple sous Acrobat
Oui, je n’avais pas fait attention : chapeau Alex !
Je posterai mon (adaptation de ton) exemple en début de semaine prochaine.
12 septembre 2010 à 09:23 #50487alex
ParticipantAttention: Acrobat PRO et LiveCycle Designer sur Pc uniquement.
Voici la solution complète… On peut voir le résultat sur Adobe Reader Mac ou Pc.Dans la maquette jointe :
1-Un script d’ouverture efface le contenu des menus déroulants.
Au passage, notez le déclencheur initialize et le placement des deux parties du script pour utiliser le champ d’information Texte1formulaire1::initialize – (JavaScript, client)
console.clear();
xfa.host.resetData();
console.println(“Informations:”);
TexteAlerte=”Reset des menus déroulants en ouverture de document.”;
console.println(TexteAlerte);formulaire1.#pageSet[0].Page1.Texte1::initialize – (JavaScript, client)
xfa.form.formulaire1.Page1.Texte1.rawValue=TexteAlerte;
2-Un script associé à un bouton élabore les tables de données et remplit le menu déroulant Mère. On aurait pu élaborer les tables à l’initialisation (c’est plus élégant).
Au passage notez la manière classique de créer un tableau à deux dimensions:
…..
Fille=new Array();
x=0;
while(x{
Fille[x]=new Array();
x=x+1;
}
…..
NB:j’ai mis des [ et des ] car l’éditeur du forum me refuse ici les crochets!3-Un script lançé lors de la sélection d’un item Mère remplit le menu déroulant Fille.
Il vaut mieux opter pour le déclencheur exit :
formulaire1.#pageSet[0].Page1.Liste_M::exit – (JavaScript, client)Merci d’avoir attendu!
[attachment deleted by admin]
12 septembre 2010 à 10:17 #50488Merlin
Maître des clésNB:j’ai mis des [ et des ] car l’éditeur du forum me refuse ici les crochets!
Il faut utiliser la balise Code pour désactiver les BB-codes et/ou les balises HTML :
Code:Ceci est un {code} contenant des balises désactivées.:soleil:
13 septembre 2010 à 06:39 #50489alex
ParticipantJe me lance, on aurait:
Code:…..
Fille=new Array();
x=0;
while(x{
Fille[x]=new Array();
x=x+1;
}
…..Un moyen d’avoir une police plus grosse comme en HTML?
13 septembre 2010 à 08:31 #50490Merlin
Maître des clésNon, je ne trouve pas d’option permettant de modifier la taille des polices dans les messages.
Il faudrait rentrer dans le code PHP…!
:Euuuh:13 septembre 2010 à 18:40 #50491pepitos137
MembreMerci, Merci, Merci Alex et Merlin.
Sa fonctionne parfaitement.
Est-il possible de supprimer l’utilisation des boutons et de la case texte “Information” et que le tout fontionne aussi parfaitement ?
On aurait pu élaborer les tables à l’initialisation (c’est plus élégant).
Est-ce cela que tu voulais dire ?
Merci encore.
13 septembre 2010 à 19:13 #50492alex
ParticipantOui, on peut supprimer le champ d’information, à condition de supprimer aussi les lignes le concernant (avec Texte1).
La partie du script destinée à construire les tableaux peut être effectuée en initialisation (ouverture du document).
Je fournirai une version qui illustre ça dès que possible, pas demain.
Bonne soirée.21 septembre 2010 à 15:43 #50493pepitos137
MembreBonjour,
Toujours en attente de la nouvelle version.
Merci de votre aide.
22 septembre 2010 à 18:16 #50494alex
ParticipantLes formulaires développés sous AcroForm (directement sous Acrobat PRO sur Mac ou PC) ne peuvent être repris que sous Acrobat PRO.
Les formulaires développés sous LiveCycle Designer (sur PC uniquement) ne peuvent être repris que sous LiveCycle Designer.Si vous ouvrez un formulaire LiveCycle sous Acrobat vous remarquerez que les outils de création de formulaire AcroForm sont désactivés (le document n’est donc pas protégé).
Il n’y a pas de moyen simple de passer de l’un à l’autre, les formats et les langages de script diffèrent.
Pour cette raison, je vous ai proposé deux maquettes de menus déroulants inter-dépendants.
J’ai déjà expliqué les avantages et les inconvénients des deux types de formulaires sur ce forum.]9 février 2012 à 13:31 #50495pikmin04
MembreBonjour, je viens de lire ce super article et j’ai bien réussi à lier ma table mère avec ma table fille.
Cependant, je n’arrive à lier une autre table fille avec la première.
Par exemple, je voudrais créer 3 menu déroulant:
-La table mère “Continent” {Asie, Europe, Afrique}
-La table fille 1 “Pays” {Chine,Japon,France,Allemagne,Algérie,Marco} ====> Jusque là c’est bon
-La table Fille 2 “Ville” {Pekin, Shangai, Paris, Nantes, Berlin, Bonn etc…}Si tu as la solution ce serait génial
Edit: En fait c’est bon j’ai réussi juste après avoir poster cette question. J’ai completer mon script d’ouverture en recopiant le premier et en changeant simplement le nom de la variable LISTE en LISTEf (pour liste fille ^^). J’ai repris le script dans la liste2 et c’est ok
10 février 2012 à 07:26 #50496pikmin04
MembreBon ben en fait ma solution n’a pas fonctionnée du tout…
Si tu pouvais m’expliquer comment faire ce serait super sympa
Merci d’avance!
10 février 2012 à 09:04 #50497alex
ParticipantEn effet, il faut revoir le script initial pour qu’il s’adapte aux trois niveaux (Continent,Pays,Ville) au lieu des deux niveaux de l’exemple précédant. Accordez moi quelques jours, je vais vous proposer une solution AcroForm uniquement…
11 février 2012 à 17:55 #50498alex
ParticipantVoilà une maquette pour illustrer une solution à votre problème si ça peut vous dépanner. Attention, la définition des tables n’est pas complète (limitée à Afrique et Europe), saurez-vous vous en débrouiller ?
On peut supprimer le bouton “Init”, l’initialisation se fait avec l’ouverture de page (script Initialisation())
Les deux autres scripts sont lançés:
1-par action du menu déroulants de niveau 1 (les continents) pour RemplissageFille()
2-par action du menu déroulants de niveau 2 (les pays) pour RemplissagePetiteFille()Les villes sont répertoriées dans les liste ListeN3 comme suit:
c est le rang du continent issu de la liste ListeN1 des continents.
p est le rang du pays issu de la liste ListeN2[c] des pays.
ListeN3[c][p]=[“Ville1″,”Ville2″,”Ville3″,”Ville4″,”Ville5”];Aucune des listes de niveau 1, 2 ou 3 n’est limitée en nombre.
On peut adapter ce système à une autre hiérarchie (il suffit de modifier les tables du script d’initialisation).
[attachment deleted by admin]
13 février 2012 à 12:16 #50499pikmin04
MembreWahoou merci beaucoup Alex! Ca marche nickel!
Il ne me reste qu’un seul petit problème maintenant.Ce fichier envoie les données en HTML vers une base de données. Il y a plusieurs autres informations dedans.
Mais pour les listes déroulantes, au lieu de me retourner le contenu du champ, il me retourne la position du choix dans la liste.
Par exemple pour Afrique/Algérie/Oran, il me renvoie Les positions 0, 0 et 3.Est ce que tu sais comment lui faire renvoyer le texte?
Encore une fois merci beaucoup
13 février 2012 à 18:48 #50500Merlin
Maître des clésJ’ai déjà expliqué les avantages et les inconvénients des deux types de formulaires sur ce forum.
==> http://abracadabrapdf.net/articles.php?lng=fr&pg=640
:bonjour:
13 février 2012 à 18:51 #50501Merlin
Maître des clésLes formulaires développés sous AcroForm (directement sous Acrobat PRO sur Mac ou PC) ne peuvent être repris que sous Acrobat PRO.
Les formulaires développés sous LiveCycle Designer (sur PC uniquement) ne peuvent être repris que sous LiveCycle Designer.Si vous ouvrez un formulaire LiveCycle sous Acrobat vous remarquerez que les outils de création de formulaire AcroForm sont désactivés (le document n’est donc pas protégé).
Il n’y a pas de moyen simple de passer de l’un à l’autre, les formats et les langages de script diffèrent.J’ai découvert un truc génial qui rend enfin (un peu) utile cette grosse bouse d’Aperçu ( http://abracadabrapdf.net/articles.php?lng=fr&pg=405 ) : il faut ouvrir le formulaire XFA dans Aperçu et Enregistrer-sous au format PDF (normal).
On perd l’interactivité mais tous les champs sont bien là, prêts à être modifiés dans Acrobat.:idee:
13 février 2012 à 19:44 #50502alex
ParticipantBien vu Merlin, ça peut servir !
pikmin04, je regarde le problème de l’envoi des données vers un serveur, effectivement en l’état on reçoit les indices des items et non les valeurs elles-même ce qui complique la tâche à l’arrivée à moins d’avoir une copie des mêmes tables dans le script du serveur (pHp ou CGI).Lorsque j’aurai une solution propre j’ouvrirai un nouveau fil “Listes déroulantes en cascade” …14 février 2012 à 12:38 #50503pikmin04
MembreC’est peut-être plus du coté de la page php ou j’envoie mes données qu’il faut creuser.
Je vais essayer de voir si je peux récupérer la value du champ dans la variable $_POSTEdit: quoi que je fasse sous php, ca ne change rien. Tout ce que j’obtiens, c’est la valeur d’exportation de chaque champ des listes déroulantes.
1 mars 2012 à 12:34 #50504pikmin04
MembreSalut Alex. Est ce que tu as trouvé comment garder les listes liées entre elles tout en renvoyant des valeurs d’exportation interprétable?
Merci d’avance
8 mars 2012 à 11:40 #50505alex
ParticipantDans 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.
[attachment deleted by admin]
8 mars 2012 à 17:45 #50506alex
ParticipantDans cette version fonctionnellement identique à la précédente toujours sous AcroForm, le script détecte l’éventuelle absence de listes d’items. Pour retrouver la console et suivre l’historique du déroulement du programme sous Acrobat (Ctrl-J SUR PC ou POMME-J sur MAC). J’espère avoir répondu à votre dernier problème.
Ce sujet semble avoir un gros succès…
[attachment deleted by admin]
13 mars 2012 à 14:15 #50507pikmin04
MembreMerci beaucoup Alex! C’est plus que parfait
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.