abracadabraPDF › Forums › PDF – Général › Activé / Désactivé (Grisé) un bouton selon la valeur d’un champ
- Ce sujet est vide.
- CréateurSujet
- 20 mai 2014 à 19:17 #44871
nabnub
MembreSalut tout le monde,
Je suis tombé sur un sujet écrit par le fameux Thom Parker (http://acrobatusers.com/tutorials/print/js_disabling_fields)
(voici le pdf qu’il illustre son sujet http://www.windjack.com/PDFSamples/DisableFields_AcroForm.pdf )
J’aimerai savoir comment changer le code pour avoir ce qui suit: 1 champ contenant une valeur et un bouton
avec les conditions suivante:
si la valeur du champ est superieur à 70 le bouton est activé
sinon il est désactivé (grisé) et ne pas etre utilisé
L’idée je pense, serait d’utilisé « if » pour appeler la fonction ou non, mais faire ce changement au code dépasse mes connaisances personnels
merci pour toute aide
- CréateurSujet
- AuteurRéponses
- 21 mai 2014 à 07:57 #57195
MerlinMaître des clésSalut,
A la base on a :
// Function to enable form fields function
EnableFormField (cFieldName)
{
// First acquire the field to be enabled
var oFld = this.getField(cFieldName)
// Next acquire the hidden field with the normal colors
var oNmlFld = this.getField(« NormalColorsFld »);
if(oFld)
{
// Make field interactive
oFld.readonly = false;
// Restore Normal Colors
oFld.fillColor = oNmlFld.fillColor; oFld.borderColor = oNmlFld.borderColor; oFld.textColor = oNmlFld.textColor;
}
}// Function to disable form fields function
DisableFormField(cFieldName)
{
// First acquire the field to be disabled
var oFld = this.getField(cFieldName)
if(oFld)
{
// Make field Read-Only
oFld.readonly = true;
// Set Grayed out colors
oFld.fillColor = [« G », 0.75]; oFld.borderColor = [« G », 2/3]; oFld.textColor = [« G », 0.5];
}
}Que l’on va transformer ainsi :
// Function to manage form fields function
ManageFormField (cFieldName)
{
var seuil = this.getField(« CHAMP-SEUIL »).value;
if (seuil > 70)
{
// First acquire the field to be enabled
var oFld = this.getField(cFieldName)
// Next acquire the hidden field with the normal colors
var oNmlFld = this.getField(« NormalColorsFld »);
if(oFld)
{
// Make field interactive
oFld.readonly = false;
// Restore Normal Colors
oFld.fillColor = oNmlFld.fillColor; oFld.borderColor = oNmlFld.borderColor; oFld.textColor = oNmlFld.textColor;
}
}
else
{
// First acquire the field to be disabled
var oFld = this.getField(cFieldName)
if(oFld)
{
// Make field Read-Only
oFld.readonly = true;
// Set Grayed out colors
oFld.fillColor = [« G », 0.75]; oFld.borderColor = [« G », 2/3]; oFld.textColor = [« G », 0.5];
}
}
}:Smiley15:
21 mai 2014 à 12:05 #57196nabnub
MembreSalut Merlin,
parcontre étant donné qu’on a plus les boutons radio qui alternaient l’état du bouton
ou met-on les codes qu’ils contenaient? ( DisableFormFieldToGray(« AuthCode ») dans l’un et EnableFormFieldFromGray(« AuthCode ») dans l’autre)
car il y’a seulement: un champ avec une valeur, un bouton et le code est en document script
ne faut’il pas aussi ajouter un code pour que la tache soit réaliser et quand ceci doit-etre réalisé ?
merci encore
21 mai 2014 à 19:06 #57197
MerlinMaître des clésDésormais c’est le code ManageFormFieldToGray(« AuthCode ») qu’il faut utiliser.
Quant à savoir où le placer, il faut savoir si le champ « seuil » (celui qui contient la valeur 70) est rempli par l’utilisateur ou bien s’il est rempli par calcul.
:Smiley01:
21 mai 2014 à 21:26 #57198nabnub
MembreJe dirais plutôt par calcul car je récupère la valeur depuis un attachement
PS: là, j’essaye de résoudre le problème qu’avec 1 champ a testé pour comprendre comment ça marche, plus tard j’aimerai essayé de le faire pour une vingtaine d’attachements, j’ai peur que ce soit lourd comme méthode, à moins d’utiliser une fonction qui test chaque champ d’un coup puis active ou non les boutons associés
22 mai 2014 à 08:39 #57199
MerlinMaître des clésAuquel cas le script ManageFormFieldToGray(« AuthCode ») doit être placé en « Script de calcul » dans le champ « seuil ».
:Smiley01:
24 mai 2014 à 22:13 #57200nabnub
MembreMerci, j’ai essayé mais ça ne marche pas vraiment
Pourrais-tu jeter un coup d’œil à ce pdf
http://cjoint.com/?DEyxrTjO29S
merci bien
PS: la condition > 70 est sur « Result1Row1 » || « Result2Row1 »
Aussi, j’aimerai connaitre ton opinion car peut être que la méthode que j’ai choisis n’est pas vraiment la meilleur
Brièvement: les attachements contiennent les résultats (1er test + 2nd test)
je récupère ces totaux dans la feuille principale pour pouvoir imprimer le certificat adéquat (e.g. s’il l’élève à été testé sur le Level 2 et qu’au premier test Ou au second il a plus de 70, le bouton print est actif sinon il est désactivé (c’est juste pour éviter le gaspillage par erreur) par ailleurs j’aimerai créer un bouton qui remplit automatiquement le bon certificat avec le nom de l’élève et de l’examinateur.
Merci pour tout conseil25 mai 2014 à 14:19 #57201
MerlinMaître des clésMoi j’arrive à écrire encore plus petit !
:geek:
25 mai 2014 à 19:44 #57202nabnub
MembreMerci, j’ai essayé mais ça ne marche pas vraiment
Pourrais-tu jeter un coup d’œil à ce pdf
http://cjoint.com/?DEyxrTjO29S
merci bien
PS: la condition > 70 est sur « Result1Row1 » || « Result2Row1 »
Aussi, j’aimerai connaitre ton opinion car peut être que la méthode que j’ai choisis n’est pas vraiment la meilleure.
Brièvement: les attachements contiennent les résultats (1er test + 2nd test)
je récupère ces totaux dans la feuille principale pour pouvoir imprimer le certificat adéquat (e.g. s’il l’élève à été testé sur le Level 2 et qu’au premier test Ou au second il a plus de 70, le bouton print est actif sinon il est désactivé (c’est juste pour éviter le gaspillage par erreur) par ailleurs j’aimerai créer un bouton qui remplit automatiquement le bon certificat avec le nom de l’élève et de l’examinateur.Merci pour tout conseil.
25 mai 2014 à 19:48 #57203nabnub
MembreJe ne sais pas ce qui s’est passé pour la taille du texte, j’ai juste fait un copier/coller de word sans me rendre compte du résultat.
26 mai 2014 à 09:06 #57204
MerlinMaître des clésOublie la saisie dans Word, ou alors utilise le copier-coller « texte brut ».
:geek:A priori tout est bon mais les scripts sont « mélangés » : un script s’adresse au document actif ouvert en 1er-plan.
Il faut d’abord exécuter les instructions destinées au document actif, ouvrir la pièce jointe et ensuite exécuter le code pour la pièce jointe, devenue « active ».
:idee:26 mai 2014 à 19:35 #57205nabnub
Membrerécapitulons, dans mon document il y a ce qui suit:
1/ un code pour récupérer la valeur dans un attachement
2/ un bouton ‘reset’ (c’était la seul méthode que j’avais trouvé) qui en fait met à jour les valeurs récupérées
3/ et notre code pour désactivé le bouton selon la condition des >70est-ce que 3 doit etre premier, si oui comment fait, car je ne vois pas vraiment, merci pour ton aide
PS: je viens juste de réaliser une petite érreur: var seuil = this.getField(« Result1Row1« ).value; // j’avais écrit « Text1«
- AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.
