Donnez vie à vos documents numériques !
 

Plusieurs combo box contrôlent le même effet show/hide… – RÉSOLU

abracadabraPDF Forums PDF – Général Plusieurs combo box contrôlent le même effet show/hide… – RÉSOLU

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #44471
    Whatever
    Membre

    Bonjour,

    J’espère que quelqu’un pourra m’aider pour mon formulaire.

    Il y a quatre combo box qui ont plus ou moins les mêmes sélections possible. Cependant je veux que lorsque “E078” est sélectionnée dans n’importe lequel des 4 combo box, le nouveau combo box “PremiumCode” devienne visible. Cela fonctionne bien lorsque je sélectionne 1, mais si je sélectionne un deuxième alors là le “PremiumCode” disparait. Est-ce que quelqu’un pourrait me dire ce qui ne fonctionne pas ?

    Voilà le code que j’ai mis dans le keystroke de chaque combo box :

    Code:
    var i1 = getField(“InPatient1”).value;
    var i2 = getField(“InPatient2”).value;
    var o1 = getField(“OutPatient1”).value;
    var o2 = getField(“OutPatient2”).value;

    if((i1 == “E078”) || (i2 == “E078”) || (o1 == “E078”) || (o2 == “E078”))

    {
    this.getField(“PremiumCode”).display = display.hidden;
    this.getField(“E078Board”).display = display.visible;
    }
    else
    {
    this.getField(“PremiumCode”).display = display.visible;
    this.getField(“E078Board”).display = display.hidden;
    }

    Je peux également poster le formulaire, si ça peut aider.

    Merci.

Affichage de 10 réponses de 1 à 10 (sur un total de 10)
  • Auteur
    Réponses
  • #54791
    Lionel
    Membre

    Bonjour,

    Je peux également poster le formulaire, si ça peut aider.

    :idee: Bonne idée, cela aiderai sûrement à mieux comprendre.

    À bientôt.
    Lionel :alien2:

    #54792
    Whatever
    Membre

    Voilà. J’aurais dû m’en douter que ce serait plus facile à comprendre avec le formulaire.

    [attachment deleted by admin]

    #54793
    Merlin
    Maître des clés

    Salut,

    J’ai fait ça mais ça fonctionne parfois avec un temps de retard, je ne comprend pas pourquoi…
    :doute: :Euuuh:

    /////////////////////////////////////////////////////////////////////////
    var i1 = getField(“InPatient1”).value;
    var i2 = getField(“InPatient2”).value;
    var o1 = getField(“OutPatient1”).value;
    var o2 = getField(“OutPatient2”).value;
    if (!event.willCommit && event.changeEx != “E078”)
    {
    if((i1 == “E078”) ||(i2 == “E078”) ||(o1 == “E078”) ||(o2 == “E078”))
    {
    this.getField(“PremiumCode”).display = display.visible;
    this.getField(“E078Board”).display = display.hidden;
    }
    else if((i1 != “E078”) && (i2 != “E078”) && (o1 != “E078”) && (o2 != “E078”))
    {
    this.getField(“PremiumCode”).display = display.hidden;
    this.getField(“E078Board”).display = display.visible;
    }
    }
    else if (!event.willCommit && event.changeEx == “E078”)
    {
    this.getField(“PremiumCode”).display = display.visible;
    this.getField(“E078Board”).display = display.hidden;
    }
    /////////////////////////////////////////////////////////////////////////

    #54794
    Whatever
    Membre

    Salut,

    J’ai fait ça mais ça fonctionne parfois avec un temps de retard, je ne comprend pas pourquoi…
    :doute: :Euuuh:

    Salut Merlin
    Merci pour avoir corrigé mon code. Cependant il y a encore un problème avec le formulaire.
    Par exemple, si je choisis E078 dans la première boîte combo, ça fonctionne et la nouvelle boîte combo apparait. Maintenant, si je choisi une nouvelle sélection la boîte ne disparait pas quelque soit le nouveau choix. Par contre… lorsque je re-choisis une autre sélection, alors là la boîte disparait! C’est donc dire que la boîte ne disparait que lorsqu’un nouveau choix a été fait 2 fois (que ce soit le même choix ou 2 choix différents).  :Euuuh:
    Est-ce qu’il y quelque chose à faire pour régler ce comportement? Je m’expliquerai mal de dire aux utilisateurs que pour faire disparaître la boîte, il faut faire 2 sélections.

    #54795
    Merlin
    Maître des clés

    C’est ce que j’entendais par “temps de retard”.
    Attendons qu’un plus calé que moi passe par là…
    :joker:

    #54796
    Whatever
    Membre

    C’est ce que j’entendais par “temps de retard”.
    Attendons qu’un plus calé que moi passe par là…
    :joker:

    J’ai posté mon problème sur le forum d’Adobe et quelqu’un m’a répondu, mais je ne comprends pas vraiment ce que ça veut dire (pas à cause de l’anglais).

    When you want to check the value of a field in that field’s own Keystroke script you need to use event.changeEx property, not access that field value property by using getField(). That returns the previously selected value, not the new one.

    Actually, I would use the custom Validation script, instead of the KeyStroke script, and then you just need to access event.value to get the new field’s value, and there’s no need to check if it will commit.

    #54797
    Merlin
    Maître des clés

    Penx tu donner le lien vers la discussion en question ?

    Là il te dit comme moi au sujet de changeEx, et ensuite il dit qu’on peut sinon utiliser un script de validation à la place changeEx.
    Pas le temps ce weekend, mais je regarderais ça en détail o + to.

    :Smiley01:

    #54798
    Whatever
    Membre

    Penx tu donner le lien vers la discussion en question ?

    Oui bien sûr.
    http://forums.adobe.com/thread/1171075?tstart=0

    #54799
    Merlin
    Maître des clés

    En fait c’est une simple question de logique, comme toujours.
    :oh:

    Ce script fonctionne :

    /////////////////////////////////////////////////////////////////////////
    var i1 = this.getField(“InPatient1”).value;
    var i2 = this.getField(“InPatient2”).value;
    var o1 = this.getField(“OutPatient1”).value;
    var o2 = this.getField(“OutPatient2”).value;
    var maValeur = “E078”;
    if (!event.willCommit)
    {
    if (event.changeEx == maValeur)
    {
    this.getField(“PremiumCode”).display = display.visible;
    this.getField(“E078Board”).display = display.hidden;
    }
    else
    {
    if ((i1 == maValeur) || (i2 == maValeur) || (o1 == maValeur) || (o2 == maValeur))
    {
    this.getField(“PremiumCode”).display = display.visible;
    this.getField(“E078Board”).display = display.hidden;
    }
    else
    {
    this.getField(“PremiumCode”).display = display.hidden;
    this.getField(“E078Board”).display = display.visible;
    }
    }
    }
    /////////////////////////////////////////////////////////////////////////

    Mais…
    Le piège se trouve ligne 15 (en bleu).
    Il ne faut pas mettre exactement le même script dans chaque champ-liste, sinon on re-teste la valeur précédente du champ-liste actif, ce qui provoque le décalage.

    Donc dans le champ InPatient1 on remplace la ligne 15 par :
    if ((i2 == maValeur) || (o1 == maValeur) || (o2 == maValeur))

    Dans le champ InPatient2 par :
    if ((i1 == maValeur) || (o1 == maValeur) || (o2 == maValeur))

    Etc.

    Voir l’exemple ci-joint.

    :bonjour:

    [attachment deleted by admin]

    #54800
    Whatever
    Membre

    Merci énormément Merlin, ça fonctionne à merveille.

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