Donnez vie à vos documents numériques !
 

Affichage de texte pour deux cases cochées dans formulaire PDF Acrobat Pro DC

abracadabraPDF Forums PDF – Général Affichage de texte pour deux cases cochées dans formulaire PDF Acrobat Pro DC

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46128
    hotispot
    Membre

      Bonjour à tous,
    J’ai une petite question à vous soumettre :

    J’ai créé un formulaire dans lequel il y a deux cases à cocher, qui ne s’annulent pas l’une l’autre.
    Quand on coche la première, un texte s’affiche.
    Quand on décoche la première case pour cocher la seconde, un autre texte apparaît.
    Jusqu’ici tout va bien : un script hidden/visible fonctionne parfaitement.
    En revanche, ce que je souhaite et que je n’arrive pas à faire, c’est qu’un troisième texte s’affiche lorsque je coche les deux cases en même temps.
    Est-ce que c’est possible et si oui quel phrase de script dois-je rajouter ?

    Merci d’avance à tous.
    N.

Affichage de 11 réponses de 1 à 11 (sur un total de 11)
  • Auteur
    Réponses
  • #66136
    Merlin
    Maître des clés

    Bonjour et bienvenue.

    Écrire un tel script n’est pas difficile, mais faute d’un exemple concret on risque de tâtonner.
    Peux tu partager ton document, ou bien une maquette-exemple ?

    #66137
    hotispot
    Membre

    Bonjour,
    Merci beaucoup pour votre réactivité.
    Voici le pdf…
    Les deux cases en question sont les deux premières…

    Merci encore

    #66138
    Chambi95
    Participant

    Merlin a bien raison…

    En attendant, voici un exemple anonymisé sur un de mes PDF (qui fonctionne parfaitement et est utilisé dans une 40aine de banques et CGPI, par des milliers d’utilisateurs….)

    Une case à cocher s’appelle GP (Garantie de Prévoyance) l’autre GD (Gestion Déléguée). Ces deux cases ont “1” en valeur de renvoi.
    Les traitements à faire diffèrent suivant que l’on a pris la GD ou pas, un texte différent s’affiche suivant que l’on ai pris l’un ou l’autre ou les deux, il n’y a pas de texte si l’on ne sélectionne aucune des deux cases.
    Dans cet exemple, lorsque la case GD est cochée, un champ de saisie supplémentaire apparait accompagné de son libellé.
    Je n’ai laissé que ce qui concerne l’affichage des différents objets, pas les calculs actuariels. J’espère que je n’ai pas dégagé un } ou un ; en enlevant tout ce qui est calcul ou appel d’autres scripts !

    Le champ d’affichage qui reçoit le texte et le “Texte_GPGD”

    // Cette version tronque les montants nets et tronque unitairement chaque partie composant la valeur de rachat
    function Calcul_vr()
    {if ((this.getField(“GP”).value==1)&&(this.getField(“GD”).value!=1))
        {this.getField(“Fonds_01”).readonly=false;
        this.getField(“Texte_Montant_GD”).display=display.hidden;
        this.getField(“Montant_versement_GD”).display=display.hidden;
        this.getField(“Montant_versement_GD”).value=0
        this.getField(“Texte_GPGD”).value=(“J’ai souscrit une Garantie de Prévoyance, alors il n’existe pas de valeur de rachat minimale exprimée en euros. Des simulations des valeurs de rachat avec prise en compte de la garantie de prévoyance sont indiquées à l’article “Montant cumulé des versements bruts et valeurs de rachat au terme des huit premières années” de la Note d’information valant Conditions générales.”);
       
        ;}
        }
    else if((this.getField(“GP”).value!=1)&&(this.getField(“GD”).value==1))
        {this.getField(“Texte_GPGD”).value=(“J’ai investi sur le mode de gestion déléguée alors le calcul de valeur de rachat minimale exprimée en euros est effectué sur les fonds en euros hors fonds Actif Général de xxxxxxxx Vie. “); 
        this.getField(“Texte_Montant_GD”).display=display.visible;
        this.getField(“Montant_versement_GD”).display=display.visible;

        }
    else if((this.getField(“GP”).value==1)&&(this.getField(“GD”).value==1))
        {this.getField(“Texte_GPGD”).value=(“J’ai investi sur le mode de gestion déléguée  et j’ai souscrit une Garantie de Prévoyance, alors il n’existe pas de valeur de rachat minimale exprimée en euros. Des simulations des valeurs de rachat avec prise en compte de la garantie de prévoyance sont indiquées à l’article “Montant cumulé des versements bruts et valeurs de rachat au terme des huit premières années” de la Note d’information valant Conditions générales.”);
        this.getField(“Texte_Montant_GD”).display=display.visible;
        this.getField(“Montant_versement_GD”).display=display.visible;
        ;}
        };

    else
        {this.getField(“Texte_GPGD”).value=(“”);
        this.getField(“Fonds_01”).readonly=false;
        this.getField(“Texte_Montant_GD”).display=display.hidden;
        this.getField(“Montant_versement_GD”).display=display.hidden;
        this.getField(“Montant_versement_GD”).value=0;
        };
    }

    #66139
    Merlin
    Maître des clés

    hotispot : on ne doit pas mettre d’espaces ni de caractères accentués ou spéciaux dans les noms de champs. Et surtout jamais de slash /
    :tutut:

    Voici le script que j’ai utilisé dans le ci-joint :

    Code:
    // mise en variable des valeurs des coches
    var n1 = this.getField(“IndemFC”).value;
    var n2 = this.getField(“IndemFCL”).value;

    // une case non cochée renvoie une valeur non numérique (NaN : Not a Number)
    if (isNaN(Number(n1))) {var n1 = 0;}
    else {var n1 = this.getField(“IndemFC”).value;}
    if (isNaN(Number(n2))) {var n2 = 0;}
    else {var n2 = this.getField(“IndemFCL”).value;}

    // comptage du total des deux coches
    var nTotal = Number(n1) + Number(n2);

    // masquage des champs “titre”
    this.getField(“titre”).display = display.hidden;

    // affichage du champ concerné
    switch(nTotal) {
    case 1:
    this.getField(“titre.IFC_CE”).display= display.visible;
    break;
    case 2:
    this.getField(“titre.IFCIL_CE”).display= display.visible;
    break;
    case 3:
    this.getField(“titre.IFCCE_IFCILCE”).display= display.visible;
    break;
    default:
    this.getField(“titre”).display = display.hidden;
    break;
    }

    #66140
    Merlin
    Maître des clés

    Chambi95 : on ne doit pas mettre de caractères accentués dans les scripts !
    Voir : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/pdf-javascript-et-unicode/
    :Smiley03:

    #66141
    hotispot
    Membre

    Un grand grand merci, Merlin…

    Comme vous l’aurez remarqué, je ne suis pas “encore” très doué avec les formulaires.
    Mais, grâce à vous, je compte bien m’améliorer.
    En tout cas, vous m’enlevez une belle épine du pied !

    Je vous souhaite une très belle journée.
    A bientôt et encore merci Merlin

    #66142
    bebarth
    Maître des clés

    bonjour,
    J’arrive un peu tard, mais a-t-on besoin de 3 boutons ???
    Si NON, un seul champ texte avec 3 valeurs différentes :

    Code:
    if (this.getField(“IndemFC”).value!=”Off”) { // Si la case FC est cochée
        if (this.getField(“IndemFCL”).value!=”Off”) { // Les 2 cases sont cochées
            event.value=”CONTRATS “IFC CE” OU “IFC/IL CE””;
        } else { // Uniquemenet FC est cochée
            event.value=”CONTRATS “IFC CE””;
        }
    } else { // la case FC n’est pas cochée
        if (this.getField(“IndemFCL”).value!=”Off”) { // Uniquemenet FCL est cochée
            event.value=”CONTRATS “IFC/IL CE””;
        } else { // Aucune case n’est cochée
            event.value=””;
        }
    }

    Et pour être un tout petit peu pointilleux, c’est inutile d’indiquer la ligne “break;” pour la valeur “default” de l’instuction “switch”.
    “default” est généralement indiqué en dernière position et on sort donc de l’instruction juste après. Et même, si on plaçait “default” en première position, ce qui serait théoriquement possible, il ne faudrait surtout pas exécuter la ligne “break;” car sinon les autres cas ne seraient pas étudiés…
    @+
    :bonjour:

    #66143
    Merlin
    Maître des clés

    c’est inutile d’indiquer la ligne “break

    Je le note.
    :Smiley03:

    #66144
    Merlin
    Maître des clés

    a-t-on besoin de 3 boutons ???
    Si NON, un seul champ texte avec 3 valeurs différentes

    Je suis d’accord, mais pour le coup les textes sont en fait des images.
    :joker:

    #66145
    Chambi95
    Participant

    Chambi95 : on ne doit pas mettre de caractères accentués dans les scripts !
    Voir : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/pdf-javascript-et-unicode/
    :Smiley03:

    Sur le principe oui bien sûr je suis d’accord….. mais le PDF en question tourne dans plus de 50 versions différentes depuis 3 ans chez des milliers d’utilisateurs répartis une quarantaine d’apporteurs (sans compter les indépendants) sur Mac, Windows XP, 7… 10 avec des Reader X, XI et DC…. sans aucun souci, alors…..

    Ce qui m’embête le plus c’est qu’il ne fonctionne pas sur Android à cause du Reader Adaube….

    #66146
    Merlin
    Maître des clés

    Ce qui m’embête le plus c’est qu’il ne fonctionne pas sur Android à cause du Reader Adaube…

    Rendons à Jules ce qui est à César : c’est Google et surtout Apple qui font tout leur possible pour empêcher Adobe de fournir un Reader “mobile*” avec des fonctions équivalentes à la version ordinateur.
    Ils préfèrent toujours vendre des apps** plutôt que de laisser circuler des documents complexes gratuitement, c’est pour ça qu’ils ont réussi à tuer Flash Player et le format SWF, y compris sur ordinateur.

    * C’est doublement compliqué pour Adobe qui considère qu’Acrobat Reader doit avoir les mêmes fonctions sur Android et sur iOS…
    ** Une app peut être gratuite pour l’utilisateur mais jamais pour le développeur qui doit payer pour publier, et chez Apple c’est particulièrement cher.

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