Affichage de texte pour deux cases cochées dans formulaire PDF Acrobat Pro DC  (Lu 105 fois) Partager ce sujet Imprimer

1 B


hotispot  09 septembre 2019 : 10:28

  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.

IP archivée


Merlin  09 septembre 2019 : 11:15

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 ?

IP archivée


hotispot  09 septembre 2019 : 11:33

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


Merci encore

IP archivée


Chambi95  09 septembre 2019 : 11:38

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;
    };
}


IP archivée


Merlin  09 septembre 2019 : 13:18

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 :

// 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;
}

IP archivée


Merlin  09 septembre 2019 : 13:23

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:

IP archivée


hotispot  09 septembre 2019 : 16:47

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

IP archivée


bebarth  09 septembre 2019 : 17:56

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

IP archivée


Merlin  09 septembre 2019 : 18:49

c'est inutile d'indiquer la ligne "break
Je le note.
 :Smiley03:

IP archivée


Merlin  09 septembre 2019 : 18:52

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:

IP archivée


Chambi95  10 septembre 2019 : 11:11

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

IP archivée


Merlin  10 septembre 2019 : 13:57

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.




IP archivée