Liste déroulante en lien avec un champ ou une autre liste déroulante  (Lu 68 fois) Partager ce sujet Imprimer

1 B


f.belly  06 novembre 2020 : 15:57

Bonjour,

grâce à vos conseils sur le forum, j'ai réussi à faire deux listes déroulantes où les valeurs de la deuxième dépendent de la réponse à la première. Jusque là pas de problème.
Mon souci est que pour que la prise en compte de la première liste déroulante se fasse : il faut que je sélectionne une première fois, puis une deuxième fois en double-cliquant, autant dire... trop de clic!
Que faut-il que je fasse ?

Pour ce faire, j'ai utilisé
Adobe acrobat Pro DC, propriété de ma première liste déroulante, format, script de touche personnalisé :

if (this.getField("Dropdown1").value =="BE") {
this.getField("Dropdown2").display =display.visible;
this.getField("Dropdown3").display =display.hidden;
this.getField("Dropdown4").display =display.hidden;
}

Et dans l'onglet action, souris relâchée, dans l'onglet Options, "Valider la valeur sélectionnée immédiatement "est coché...
Merci à vous,

IP archivée


Merlin  06 novembre 2020 : 18:32

Pour les listes déroulantes il faut utiliser le "Script de touche perso". Ça c'est bon.
Là où ça cloche c'est que tu utilises value : c'est la valeur du champ, celle qui était déjà enregistré avant qu'on clique dessus (d'où le temps de retard).
Dans les champs liste déroulante et zone de liste il faut utiliser changeEx qui représente la valeur en cours d'évènement :
https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/Acro12_MasterBook/JS_API_AcroJS/event_properties.htm?rhhlterm=willcommit&rhsyns=%20#XREF_64007_changeEx

En plus il faut protéger le tout avec willCommit pour éviter que le script ne tourne à vide :
https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/Acro12_MasterBook/JS_API_AcroJS/event_properties.htm?rhhlterm=willcommit&rhsyns=%20#XREF_47823_willCommit

Ce qui nous donne ce script, auquel j'ai ajouté le else pour que les champs reviennent à l'état précédent si l'utilisateur change d'avis (non testé) :

if (!event.willCommit) {
   if (event.changeEx == "BE") {
      this.getField("Dropdown2").display = display.visible;
      this.getField("Dropdown3").display = display.hidden;
      this.getField("Dropdown4").display = display.hidden;
   }
   else {
      this.getField("Dropdown2").display = display.hidden;
      this.getField("Dropdown3").display = display.visible;
      this.getField("Dropdown4").display = display.visible;
   }

}

IP archivée


f.belly  06 novembre 2020 : 21:15

MERCI !
Oui pour le else, je ne l'avais pas mis dans ce que je vous ai envoyé, car je n'ai pas mis tout mon code !
Ça fonctionne très bien avec votre solution !
MERCI
Bonne soirée à vous et prenez soin de vous!
Je n’exclus pas d'avoir besoin de nouveau à votre aide !


IP archivée