Donnez vie à vos documents numériques !
 

Afficher ou cacher photos en fonction d’une liste

abracadabraPDF Forums PDF – Général Afficher ou cacher photos en fonction d’une liste

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45869
    Paok
    Membre

    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

Affichage de 19 réponses de 1 à 19 (sur un total de 19)
  • Auteur
    Réponses
  • #64048
    Merlin
    Maî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:

    #64049
    bebarth
    Maître des clés

    bonjour,
    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:

    #64050
    Merlin
    Maître des clés

    Serais tu un switcher ? :Smiley08:

    #64051
    bebarth
    Maître des clés

    ??? je n’ai pas compris !
    :doute:

    #64052
    Merlin
    Maître des clés

    C’est donc que tu n’en es pas un : http://www.adicie.com/archives/25 :geek:    :Smiley03:

    #64053
    bebarth
    Maître des clés

    Je 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:

    #64054
    Paok
    Membre

    Merci 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” !

    #64055
    bebarth
    Maître des clés

    bonjour,
    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:

    #64056
    Merlin
    Maître des clés

    je préfère l’expression switch

    Est-ce que “switch” supporte des conditions ?
    Exemple :

    switch (event.value) {
        case “
    i “:
        this.getField(“Phot”).display = display.hidden;
        this.getField(“Phot.A”).display = display.visible;
        break;

    #64057
    Paok
    Membre

    Bataille 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)

    #64058
    bebarth
    Maître des clés

    non,mais on peut écrire :

    Code:
    switch (event.value     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:

    #64059
    Merlin
    Maître des clés

    Est-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.

    #64060
    Merlin
    Maître des clés

    Bataille entre Switch et Esle if

    Non, non. C’est une vraie question qui pourrait s’appliquer à un de mes scripts en cours.

    #64061
    bebarth
    Maître des clés

    bonjour,

    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:

    #64062
    Paok
    Membre

    Dans 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.

    #64063
    Merlin
    Maître des clés

    Ajoute ce script en action “souris relevée” dans tous les BR2 :

    Code:
    this.getField(“Liste”).value = ” “;

    (Ne pas supprimer l’espace entre les guillemets)

    #64064
    bebarth
    Maître des clés

    bonjour,
    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:

    #64065
    Paok
    Membre

    C’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 !

    #64066
    bebarth
    Maître des clés

    Le 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:

Affichage de 19 réponses de 1 à 19 (sur un total de 19)
  • Vous devez être connecté pour répondre à ce sujet.