abracadabraPDF › Forums › PDF – Général › Listes déroulantes liées et champs associés
- Ce sujet est vide.
-
CréateurSujet
-
10 juin 2015 à 19:30 #45172micka92Membre
Bonsoir.
Après quelques recherches sur le forum, je n’ai pas trouvé le moyen de réaliser le formulaire que je souhaite :
– Afficher une liste déroulante à 3 choix
– Chaque choix de la première liste doit faire apparaître une seconde liste différente
– Le choix de cette seconde liste doit faire apparaître une valeur dans un champ n°1
– Le choix de cette seconde liste doit faire apparaître une valeur dans un champ n°2Le formulaire doit être utilisé sur iPad (PDF Expert).
En espérant avoir été suffisamment explicite dans ma demande.
Cordialement.
-
CréateurSujet
-
AuteurRéponses
-
11 juin 2015 à 13:58 #59063jeanine63000Membre
Bonjour,
Essaye une recherche en “mère fille” ou “menu déroulant en cascade”.16 juin 2015 à 22:13 #59064micka92MembreBonsoir.
J’ai bien réussi à modifier à ma sauce le script d’un fichier sur le forum nommé “Abracadabra_Menu deroulant_Liste mere fille.pdf”.
Problème : en modifiant les choix des menus sur ce fichier cela fonctionne parfaitement. En copiant-collant le script sur un nouveau fichier (ma création), cela ne fonctionne plus. J’ai un message d’erreur m’indiquant “Liste fille *Choix menu 1* non définie”. J’ai pourtant bien repris les deux scripts de page ainsi que le script de touches personnalisé…
Si quelqu’un peut m’aider ! :mur:
16 juin 2015 à 22:32 #59065MerlinMaître des clésBonjour.
C’est parce-que tu ne copies que la partie émergée de l’iceberg.
L’essentiel des scripts est placé en “Script de document”, voir chapitre 3 sur cette page : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/:idee:
17 juin 2015 à 05:39 #59066micka92MembreBonjour Merlin.
J’ai bien recopié le script de document (que j’ai appelé script de page dans mon précédent post… :Ooops: ). J’ai le même message d’erreur que sur le fichier “Abracadabra_Menu deroulant_Liste mere fille” si je choisis Amérique du Sud puis Brésil (ce qui est normal puisque dans le script de document “Initialisation”, il n’a pas été défini de liste petite-fille pour le Brésil).
J’ai tenté de réduire le nombre de choix à 4 sur ma liste fille car je pensais que cela pouvait venir de cela (ça peut aller à 20 pour mon besoin) mais ça ne marche toujours pas…
17 juin 2015 à 06:38 #59067micka92MembreJe viens de tenter un vrai copier coller avec les mêmes valeurs, les mêmes scripts, les mêmes noms de champs etc mais cela ne fonctionne pas.
Je me pose la question de savoir comment le script de document se lance au démarrage ? Y-a-t’il un réglage à faire quelque part que je ne ferai peut-être pas dans mon nouveau document ?
17 juin 2015 à 08:10 #59068MerlinMaître des clésOuvre ton document de travail, dans ce document de travail tu importes le document d’exemple qui contient les scripts de document (panneau Pages : Importer des pages).
Et ensuite tu supprimes immédiatement les pages importées.Résultat : tous les scripts de document ont été transférés (intacts) dans ton document de travail !
:extra:17 juin 2015 à 11:05 #59069micka92MembreJe viens de faire la manip. Cela fonctionne parfaitement tant que je ne ferme pas le fichier. Si je l’enregistre, le ferme et l’ouvre à nouveau, j’ai le même problème qu’avant.
17 juin 2015 à 11:57 #59070MerlinMaître des clésA partir de là, soit tu fais passer un exemple de ton document soit on joue aux devinettes…
:Smiley15:17 juin 2015 à 16:35 #59071micka92MembreBonsoir.
Vous trouverez ci-joint un exemple du problème concerné. Le champ “ld_ff1” est la liste mère et le champ “ld_ff2” la liste fille.
20 juin 2015 à 09:16 #59072micka92MembreJe n’y arrive toujours pas… :mur:
Si j’ajoute le fichier “Abracadabra_Menu deroulant_Liste mere fille”, soit la liste fille fonctionne, soit la liste mère perd ses valeurs enregistrées. Quoiqu’il arrive, en enregistrant/fermant le fichier et l’ouvrant à nouveau, j’ai toujours le message d’erreur “Liste fille *Choix menu 1* non définie”.
20 juin 2015 à 14:46 #59073MerlinMaître des clésSi j’ajoute le fichier “Abracadabra_Menu deroulant_Liste mere fille”
Où trouve t’on ce document ?
21 juin 2015 à 18:54 #5907422 juin 2015 à 08:52 #59075brumbiesMembreBonjour,
Quelques Pistes…
1) tu dois Initialiser tes listes à l’ouverture du document… Met en script d’ouverture ta fonction “Initialisation();”
2) ta fonction initialisation comporte une ligne qui a 1 élément de trop et qui ne permet donc pas l’insertion d’Item sur tes listes…
Ton code : this.getField(“ld_ff1”).insertItemAt(ListeN1[indexTypeFF],ListeN1[indexTypeFF],ListeN1[indexTypeFF],indexTypeFF)
Celui qui est correct : this.getField(“ld_ff1”).insertItemAt(ListeN1[indexTypeFF],ListeN1[indexTypeFF],indexTypeFF)Essai ce devrait mieux fonctionner…
:Smiley01:
22 juin 2015 à 18:02 #59076micka92MembreBonsoir.
J’ai modifié la ligne en erreur mais en ce qui concerne le script d’ouverture… je ne vois pas comment faire. J’ai cherché sur le forum quelques sujets à propos de cela mais je ne pige pas :Ooops:
22 juin 2015 à 21:32 #59077brumbiesMembreBonsoir,
Tu l’as peut être déjà indiqué mais tu utilises quelle logiciel pour créer ton PDF? et quelle version?
:Smiley01:23 juin 2015 à 06:09 #59078micka92MembreBonjour.
J’utilise Adobe Acrobat XI Pro et le formulaire sera utilisé sur iPad avec PDF Expert 5.
23 juin 2015 à 08:00 #59079brumbiesMembreBonjour,
Donc tu peux procéder ainsi :
- Cliquez sur le bouton Vignettes de page, à gauche.
- Sélectionnez la vignette associée à la page qui vous intéresse, puis choisissez Propriétés de la page dans le menu Options .
- Cliquez sur l’onglet Actions.
- Dans le menu Sélectionner le déclencheur, choisissez Ouverture de la page pour définir une action à l’ouverture de la page ou choisissez Fermeture de la page pour définir une action à la fermeture de la page.
- Choisissez “Exécuter un script javascript” dans le menu Sélectionner l’action, puis cliquez sur Ajouter.
[/list] :Smiley01:
23 juin 2015 à 13:13 #59080alexParticipantBonjour à tous,
Oui, on peut très bien lancer le script d’initialisation à l’ouverture de page.
On peut aussi le lancer à l’ouverture du document en utilisant la procédure suivante:function Initialisation()
{
//suite des opérations à effectuer…
}
Initialisation()C’est ce que j’ai illustré dans l’exemple joint.
23 juin 2015 à 19:51 #59081micka92MembreBonsoir.
Merci à vous deux pour vos différentes solutions qui fonctionnent parfaitement.
Petite question pour ma culture personnelle : quelle est la différence entre les deux méthodes proposées ?
23 juin 2015 à 20:01 #59082micka92MembreAutre petite question pour finaliser mon formulaire car j’ai fait des recherches mais je préfère en être sûr :
– Le script permettant d’envoyer un formulaire PDF par mail en reprenant un champ (deux idéalement) dans l’objet fonctionnera-t-il sur PDF Expert ?24 juin 2015 à 09:23 #59083brumbiesMembreBonjour,
1) Dans ton cas, il n’y a pas de différence entre les 2 méthodes au niveau du résultat recherché.
Celui d’Alex s’exécute à l’ouverture du document. Tandis que le mien ne s’exécute qu’à l’ouverture de la page.
Donc si la page que tu ouvres à l’ouverture contient le script il s’ouvrira à l’ouverture, alors que si ce n’est pas le cas il ne s’exécutera qu’après coup.
De plus, la méthode d’Alex est prioritaire sur les scripts de page dans l’ordre d’exécution des scripts….Donc pour résumer, ça va dépendre de ce que tu souhaites faire…
2) Il faut tester…
:Smiley01:25 juin 2015 à 12:00 #59084micka92MembreMerci à tous pour votre collaboration. Mon formulaire fonctionne bien désormais.
Faute de trop bien faire (grâce à vous), on me demande désormais d’afficher un champ et du texte si une valeur précise de ma liste déroulante est choisie. J’ai cherché sur le forum mais entre les calques et tout le reste, j’ai peur de m’y perdre… :Ooops:
25 juin 2015 à 12:27 #59085micka92MembreEn complément d’information, ce que j’appelle “texte à afficher” fait partie de ma trame de fond du document. Cela apparaît comme un champ modifiable uniquement en allant dans “Modification du contenu > Modifier le texte et les images”.
25 juin 2015 à 13:17 #59086MerlinMaître des clésTu as le choix entre :
– placer par-dessus un champ de formulaire à fond blanc pour servir de cache,
– supprimer le texte de la page, et remplacer par un champ de formulaire qui s’affichera en fonction.
Dans les deux cas il vaudra mieux placer le déclencheur dans la liste déroulante.
25 juin 2015 à 21:10 #59087micka92MembreMerci Merlin !
Cela marche parfaitement. Je suis content car j’arrive plus facilement à appréhender les scripts du site et à les adapter à mon formulaire (même si pour le coup, celui-là est très facile :jerisjaune: ).
Pour finaliser le tout, j’aimerais qu’un champ date s’écrive en rouge si la date inscrite est postérieure de plus de 365 jours à la date d’un autre champ date.
26 juin 2015 à 09:41 #59088brumbiesMembreBonjour,
As tu regardé le topic suivant?
http://abracadabrapdf.net/forum/index.php/topic,2662.msg14500.html#msg14500
Avec l’exemple d’Alex et en l’adaptant légèrement tu devrais pouvoir réussir à faire ce que tu veux…ensuite pour modifier la couleur du texte d’un champs on peut utiliser:
Code:var f = this.getField(“myField”);
f.textColor = color.red;ensuite pour le remettre en noir: color.black
:Smiley01:30 juin 2015 à 08:22 #59089micka92MembreBonjour.
Effectivement, le script répond à mes attentes mais je n’arrive pas obtenir le résultat que je veux, c’est-à-dire que le texte s’affiche en rouge.
En effet, j’ai modifié la condition de contrôle par “if ecartJ<-365" et le résultat escompté est le bon. Toutefois, le contenu du champ disparaît quand la condition est validée. Je ne comprends pas pourquoi...
30 juin 2015 à 08:38 #59090brumbiesMembreBonjour,
Le plus simple serait que tu post un exemple actualisé de ton fichier…
:Smiley01:30 juin 2015 à 09:04 #59091micka92MembreVoilà !
30 juin 2015 à 10:30 #59092brumbiesMembreC’est tout de suite plus facile … :geek:
donc ton problème est que tu as définit en script de document une fonction Controle() que tu n’appelles pas … donc rien ne peut s’exécuter !
L’astuce est de mettre au niveau de ton champs “c_dateverifdff” => Propriétés => Validation => Exécuter un script de validation personnalisé
et tu y places l’instrcution :
Controle();Ensuite attention, car si la date est supérieure à 1 an alors le texte “s’effacera” car tu as mis :
this.event.target.fillColor=color.transparent;:Smiley01:
30 juin 2015 à 15:32 #59093micka92MembreAu temps pour moi, l’exemple que j’ai envoyé ne comprends pas l’activation du script que j’ai bien dans mon document original sur le champ “Date 2”. Tout comme la couleur rouge qui est bien présente sur mon formulaire. J’ai donc envoyé un exemple en partant d’une mauvaise version désolé :Ooops: .
En prenant le bon document, ma date disparaît toujours quand elle est supérieure à un an :
this.event.value=””;this.event.target.textColor=color.red;Par contre, si je sélectionne le champ, alors il apparaît en rouge après… :oh:
Pour finir, à quoi sert la ligne ? : this.event.target.fillColor=this.getField(“c_dateinter”).fillColor;
30 juin 2015 à 15:35 #59094micka92MembreBizarre… à la première date supérieure d’un an que j’ai mise, elle disparaît. Puis, si je saisis une nouvelle date, qu’elle soit supérieure ou inférieur à un an, elle reste en rouge.
30 juin 2015 à 18:53 #59095brumbiesMembreOk je n’avais pas vu la ligne this.event.value=””;
qui réinitialise à “vide” la valeur de ton champs Date2 => donc dans ton script si la condition était vrai alors la valeur disparaissait.De plus la fonction filColor modifie la couleur de fond et non la couleur du texte, donc inutile dans ton cas…
donc si la condition est vrai => alors la couleur de fond se met en rouge
sinon => elle se met de la même couleur que celle de ton champ “c_dateinter” ………. qui n’existe pas !donc je modifierai le code suivant
Code:if(ecartJ<0)
{
this.event.value=””;
this.event.target.fillColor=color.transparent;
}
else
{
this.event.target.fillColor=this.getField(“Date1”).fillColor;
}par
Code:if(ecartJ<-365) // pour prendre en compte la différence d'un an en moins du champs Date2 par rapport à Date1
{
this.event.target.textColor = color.red;
}
else
{
this.event.target.textColor = color.black;
}:Smiley01:
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.