abracadabraPDF › Forums › PDF – Général › Afficher ou cacher photos en fonction d’une liste
- Ce sujet est vide.
- CréateurSujet
- 29 mai 2018 à 12:24 #45869PaokMembre
Bonjour,
Et avant merci pour cette base de connaissance disponible pour tout le monde.
Vous trouverez ci-joint mon fichier exemple. Lorsque la valeur “A” de la liste est sélectionner la photo A doit apparaitre, pareil pour B et C… Et quand ” ” est sélectionner toutes les photos doivent se cacher.
Le problème c’est que le photo font apparaître la valeur sélectionner précédement.Merci d’avance,
Paok - CréateurSujet
- AuteurRéponses
- 29 mai 2018 à 13:53 #64048MerlinMaître des clés
Bonjour et bienvenue.
C’est toute la différence entre “value” et target.value”, pour les listes déroulantes la différence est importante.
Les “else if” aussi sont importants, ça n’a pas la même signification que des “if” qui se suivent.
Remplace ton script par celui-ci :
Code:if (event.value === “A”)
{this.getField(“Phot”).display = display.hidden;
this.getField(“Phot.A”).display = display.visible;}else if (event.value === “B”)
{this.getField(“Phot”).display = display.hidden;
this.getField(“Phot.B”).display = display.visible;}else if (event.value === “C”)
{this.getField(“Phot”).display = display.hidden;
this.getField(“Phot.C”).display = display.visible;}else
{this.getField(“Phot”).display = display.hidden;}:Smiley15:
29 mai 2018 à 14:45 #64049bebarthMaître des clésbonjour,
moi quand il y a plein de if/else, je préfère l’expression switch qui pour moi me semble plus claire.Code:switch (event.value) {
case “A”:
this.getField(“Phot”).display = display.hidden;
this.getField(“Phot.A”).display = display.visible;
break;
case “B”:
this.getField(“Phot”).display = display.hidden;
this.getField(“Phot.B”).display = display.visible;
break;
case “C”:
this.getField(“Phot”).display = display.hidden;
this.getField(“Phot.C”).display = display.visible;
break;
default:
this.getField(“Phot”).display = display.hidden;
}Mais ce n’est que mon opinion !
@+
:bonjour:29 mai 2018 à 15:52 #64050MerlinMaître des clésSerais tu un switcher ? :Smiley08:
29 mai 2018 à 16:21 #64051bebarthMaître des clés??? je n’ai pas compris !
:doute:29 mai 2018 à 16:24 #64052MerlinMaître des clésC’est donc que tu n’en es pas un : http://www.adicie.com/archives/25 :geek: :Smiley03:
29 mai 2018 à 16:54 #64053bebarthMaître des clésJe n’ai jamais eu de PC ! :extra:
Apple II en 1980 et Mac depuis le 128k en 1984… et en 110 V. J’avais un transfo presque aussi gros que le Mac.Il y a eu des moments très durs début des années 90 ou le service informatique voulait supprimer mon mac. Grâce à mes collègues américains qui m’ont toujours soutenu, j’ai pu rester le seul Mac en France. Quel bonheur… comme ils n’y connaissent rien, j’ai tous les droits admin sur mes Mac’s. Je fais ce que je veux et je les sollicite uniquement pour l’achat de matériel ou logiciel. Et à chaque fois j’entends “Mac, c’est de la m….”. Au début ça m’énervais mais ça fait déjà un moment que ça glisse et que je pense “cause toujours, le principale c’est que j’ai mon Mac”. J’en ai d’ailleurs 3 sur mon bureau maintenant !
@+
:bonjour:30 mai 2018 à 07:29 #64054PaokMembreMerci pour vos réponses si rapide, j’ai pus tester hier, et ça marche. Je suis plus partis sur la solution de Merlin qui permets d’être plus “littéraire” et compréhensible pour moi (et mes collègues qui ne connaissent pas javascript).
Étant un novice de javascript (j’ai démarré il y a 2 semaines) je me demandais ce qu’été la différence entre “event.target.value” et “event.value” !30 mai 2018 à 08:21 #64055bebarthMaître des clésbonjour,
Ce n’est pas très évident à comprendre, car event.value représente la nouvelle valeur du champ, tandis que event.target.value représente la valeur actuelle du champ.
https://forums.adobe.com/thread/2302153
“Savoir quand utiliser l’un ou l’autre est compliqué…” c’est dit dans le texte !
@+
:bonjour:30 mai 2018 à 11:35 #64056MerlinMaître des clésje préfère l’expression switch
Est-ce que “switch” supporte des conditions ?
Exemple :switch (event.value) {
case “i < 55“:
this.getField(“Phot”).display = display.hidden;
this.getField(“Phot.A”).display = display.visible;
break;30 mai 2018 à 11:45 #64057PaokMembreBataille entre Switch et Esle if. :extra:
Je me demandais aussi 2 trucs qui n’ont rien à voir avec le sujet : :oh:
Est-il possible de cacher 1 seul bouton-radio sur 3 (par exemple) sans que les 2 autres se cachent ?
(Actuellement je force une valeur et mets les bouton-radio en “lecture seule”)Et,
Est-il possible d’affecter une condition (en script de calcul) de type changement de valeur ?
Par exemple :
Si, à chaque que je change la valeur du bouton radio1
Alors, la Liste1 revient à sa valeur initial (et on peut encore changer la valeur de la Liste1 à la main)30 mai 2018 à 13:29 #64058bebarthMaître des clésnon,mais on peut écrire :
Code:switch (event.value < 55) {
case true:
this.getField(“Phot”).display = display.hidden;
this.getField(“Phot.A”).display = display.visible;
break;
default:
this.getField(“Phot”).display = display.hidden;
}…je reviens plus tard pour les autres questions !
@+
:bonjour:30 mai 2018 à 13:54 #64059MerlinMaître des clésEst-il possible de cacher 1 seul bouton-radio sur 3 (par exemple) sans que les 2 autres se cachent ?
Pour les boutons-radio le plus simple est d’utiliser le bon vieux truc du cache blanc par-dessus. :Smiley03:
C’est l’ordre de tabulation des champs qui détermine leur position : le premier dans la liste est en arrière-plan et le dernier est en premier-plan.30 mai 2018 à 13:56 #64060MerlinMaître des clésBataille entre Switch et Esle if
Non, non. C’est une vraie question qui pourrait s’appliquer à un de mes scripts en cours.
30 mai 2018 à 14:29 #64061bebarthMaître des clésbonjour,
Est-il possible de cacher 1 seul bouton-radio sur 3 (par exemple) sans que les 2 autres se cachent ?
ça Merlin a répondu !
Si, à chaque que je change la valeur du bouton radio1
Alors, la Liste1 revient à sa valeur initial (et on peut encore changer la valeur de la Liste1 à la main)…et ça, ce serait bien que tu reformules et si possible que tu partages un fichier, car je ne suis pas certain de comprendre !
A quoi servent les boutons radio ?
@+
:bonjour:31 mai 2018 à 09:43 #64062PaokMembreDans le fichier ci-joint, je voudrais que la Liste revienne à sont état initial (la valeur ” “) à chaque fois que BR2 change de valeur (sans forcément cliquer sur BR2), en sachant que dans le document original (ci-joint un exemple pour le forum) il y a un cascade de bouton radio qui se contrôle entres eux.
31 mai 2018 à 11:20 #64063MerlinMaître des clésAjoute ce script en action “souris relevée” dans tous les BR2 :
Code:this.getField(“Liste”).value = ” “;(Ne pas supprimer l’espace entre les guillemets)
31 mai 2018 à 11:22 #64064bebarthMaître des clésbonjour,
Dans le fichier joint, j’ai mis un script de calcul sur le bouton droit BR1.Code:if (this.getField(“BR2”).value==2) {
this.getField(“BR2”).value=1;
} else {
this.getField(“BR2”).value=2;
}
this.getField(“Liste”).value=” “;Donc, dans l’exemple uniquement lorsqu’on clique le bouton BR1 droit, le bouton BR2 change et la liste est remise sur ” “.
J’ai remis les champs A, B et C sinon il y avait erreur…
@+
:bonjour:31 mai 2018 à 11:48 #64065PaokMembreC’est ce que je pensais.
Est ce que je suis obligé de passer par un script d’action sur chaque bouton qui me change la valeur de BR2 ?Je ne peux pas passer par un script de calcul (dans la liste) de ce type :
Code:Si BR2 change de valeur
Alors Liste.value = ” “???
Sur le vrai formulaire, j’ai une petite trentaine de bouton radio qui se change de valeur entre eux (configurateur produit), je me demandais juste si j’étais obligé de passer par des script d’action sur chaque bouton !
31 mai 2018 à 12:18 #64066bebarthMaître des clésLe script de calcul est déclenché par le changement d’état d’un champ (celui-ci ou un autre). Merlin… des commentaires ?
https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/lordre-dexecution-des-evenements-dans-les-champs-de-formulaire-pdf/
Lorsque le script est lancé il s’exécute entièrement. Donc si le script de calcul de ta liste est lancé, il va voir la valeur du bouton BR2 qui ne changera pas d’état pendant tout le script !
Pour faire un peu plus court, tu peux écrire une formule en script de document et lancer cette formule sur chaque bouton.
Par exemple, en script de document tu écris :Code:function maFormule()
{
if (this.getField(“BR2”).value==2) {
this.getField(“BR2”).value=1;
} else {
this.getField(“BR2”).value=2;
}
this.getField(“Liste”).value=” “;
}…et en script d’action du bouton radio tu écris juste :
Code:maFormule();S’il y a des modifications ou du supplément de script, il n’y a juste à l’écrire dans le script de document. Si tu as 30 boutons, ça réduit pas mal le temps !
@+
:bonjour: - AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.