Messages récents

: 1 2 3 ... 10
1
À placer dans le bouton de vérification des champs obligatoires :

var nObligatoireVide = 0;
for(var i=0; i<this.numFields; i++) {
var nomChamp = this.getNthFieldName(i);
var oChamp = this.getField(nomChamp);
// champs Texte
if ((oChamp.type == "text") && (oChamp.required == true) && (oChamp.value == "")) {
oChamp.strokeColor = color.red;
nObligatoireVide++;
}
// champs Case-à-cocher
else if ((oChamp.type == "checkbox") && (oChamp.required == true) && (oChamp.value == "Off")) {
oChamp.strokeColor = color.red;
nObligatoireVide++;
}
// champs Liste déroulante
else if ((oChamp.type == "combobox") && (oChamp.required == true) && (oChamp.value == oChamp.defaultValue)) {
oChamp.strokeColor = color.red;
nObligatoireVide++;
}
}
//
if (nObligatoireVide > 0) {
app.alert({cMsg: "Merci de remplir tous les champs obligatoires (en rouge).", nIcon: 1, cTitle: "COUCOU"});
}
else {
// impression, envoi par email, etc.
}


S'il y en a, ce script entoure tous les champs obligatoires non remplis d'un contour rouge.
Ce qui veut dire qu'il faut ensuite supprimer ce contour rouge quand l'utilisateur rempli les champs concernés, donc il faut ajouter ce script en action "Champ activé" dans tous les champs obligatoires :

event.target.strokeColor = color.transparent;Où "transparent" est à remplacer par la couleur de contour normale

 :Smiley15:
2
PDF - Général / Re : Formulaire remplissable en ligne (via lien) et validation
« Dernier message par Merlin le Aujourd'hui à 10:01 »
L'enchainement des actions n'est pas logique : si on ne vérifie pas avant si le champ "avis" est déjà rempli c'est toujours la première condition qui s'exécutera, donc l'utilisateur tournera en boucle (et en bourrique).

Je suggère de prendre le problème autrement : si la 1re condition est remplie le champ dans lequel on doit remplir l'avis devient obligatoire, sinon il ne l'est pas.
À placer en script de calcul dans ledit champ :

var strText1 = this.getField("cat").valueAsString;
var strText2 = this.getField("Avis").valueAsString;
if ((strText1 == "JAD Stagiaire" || strText1 == "AA District Stagiaire" || strText1 == "Senior Stagiaire") && (strText2 == "NON CONCERNE";)) {
event.target.required = true;
}
else {
event.target.required = false;
}


Ensuite il ne reste qu'à vérifier les champs obligatoires.
On en reparlera plus tard. Je n'ai pas le temps aujourd'hui.
  :joker:
3
J'ai beau chercher..je suis sec....ca ne marche pas

Sur le formulaire que tu as deja bidouiller pour l'alleger, j'aimerais ajouter un bouton de vérification.

Lorsque j'appuie dessus j'aimerais :

- Qu'il vérifie la valeur de deux champs et qu'il affiche un message d'erreur le cas échéant :
             * si la valeur du champ de la liste déroulante "cat" = "JAD Stagiaire" OU "cat"="AA District Stagiaire" OU " Senior Stagiaire" ET que la valeur ddu champ de la lsite dérulante "Avis" = "NON CONCERNE"
             * ALORS affiche un message (S'agissant d'un arbitre stagiaire, vous devez rendre un avis)
Puis
             * SI les champs obligatoires ne sont pas remplis, fais apparaître un message d'alerte (Il manque des données...),

SINON propose d'enregsitrer le document en l'état (modifiable) en SAVE AS

Voila ce que j'ai mis mais ça marche pas du tout
var categ = this.getfield("cat").value; // valeur du menu déroulant cat (catégorie)
var avobs = this.getfield("avis").value; // valeur du menu déroulant avis (avis de l'observateur)
if ((
categ =="Senior Stagiaire" ||
categ=="AA DistrictStagiaire" ||
categ=="JAD Stagiaire") &&
(avobs=="NON CONCERNE"))
{
app.alert("S'agissant d'un arbitre stagiaire, vous devez rendre un avis sur la validation de l'examen.");
this.getField("avis").setFocus();
break;
}
else
for(var i = this.numFields - 1; i > -1; i--)
{
var fieldName = this.getNthFieldName(i);
if ((
this.getField(fieldName).type!="button" && this.getField(fieldName).required==true) &&
(this.getField(fieldName).value=="" || this.getField(fieldName).value=="Off"))
{
app.alert("Le champ " +fieldName+ " ne semble pas rempli, merci de le compléter.");
this.getField(fieldName).setFocus();
break;
}
}
//
if(i<0){//Verrouiller tous les champs
for (var i=0; i<this.numFields; i++) {
   var fname = this.getNthFieldName(i);
   var f = this.getField(fname);
   f.readonly = true;
}

// Enregistrer
app.execMenuItem("SaveAs")}

4
bonjour, tu vas à l'accueil...et tu cliques sur nouveau sujet....
5
Bonjour,
désolé, mais je cherche un créer un sujet pour un problème tout a fait différent.
Seulement, je ne trouve pas ou ....
Quelqu'un pourrait me renseigner svp ? Merci
6
il est où le problème?
Qu'en dit la Console ? (Voir : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/console-javascript-d-acrobat/ )
Quoi qu'il en soit, donner le même nom à un champ et à une variable est une très mauvaise idée.
As-tu recherché dans le forum ? Il y a plusieurs exemples de scripts de contrôle.
7
Merci MERLIN pour tes tuyaux et ton aide surtout !!
Même si je ne suis pas arrivé à faire comme toi.... CE n'est pas grave, je vais tout recommencer...
Sinon, je vais abuser de ta bonté :
J'ai voulu ajouter un bouton de validation ; ce bouton servira à contrôler que des champs (obligatoire) sont remplis, que les box déroulantes aient une valeur autre que "choisir" (valeur par défaut), et d'autre part, que si un champ a une certaine valeur/texte, et qu'un autre champ défini a une valeur précise, un message d'erreur apparaisse pour que l'utilise corrige.
Si tout est ok, j aimerai que le document soit enregistré tel quel (modifiable par correcteur)
Voici ce que j'ai pondu...mais ca marche pas
var cat = this.getfield("cat").value; // valeur du menu déroulant cat (catégorie)
var avis = this.getfield("avis").value; // valeur du menu déroulant avis (avis de l'observateur)
if ((
this.getfield("cat").value =="Senior Stagiaire" ||
this.getfield("cat").value=="AA District_Stagiaire" ||
this.getfield("cat").value=="JAD Stagiaire") &&
(this.getfield("avis").value=="NON CONCERNE"))
{
app.alert("S'agissant d'un arbitre stagiaire, vous devez rendre un avis sur la validation de l'examen.");
this.getField("avis").setFocus();
}
else
for(var i = this.numFields - 1; i > -1; i--)
{
var fieldName = this.getNthFieldName(i);
if ((
this.getField(fieldName).type!="button" && this.getField(fieldName).required==true) &&
(this.getField(fieldName).value=="" || this.getField(fieldName).value=="Off"))
{
app.alert("Le champ " +fieldName+ " ne semble pas rempli, merci de le compléter.");
this.getField(fieldName).setFocus();
break;
}
}
//
if(i<0){//Verrouiller tous les champs
for (var i=0; i<this.numFields; i++) {
   var fname = this.getNthFieldName(i);
   var f = this.getField(fname);
   f.readonly = true;
}

// Enregistrer
app.execMenuItem("SaveAs")}
Alors Merlin, à part entre la chaise et le clavier, il est où le problème?

8
astucieux !!! je vais essayer de le refaire....
9
 :Smiley08: :Smiley08: mdr.....je vais corriger....merci
10
Sinon, comment as-tu fait pour supprimer les polices inutiles ?
D'abord j'ai changé la police dans tous les champs.
Comme l'optimiseur d'Acrobat ne voulait pas supprimer les polices du document j'ai pris une nouvelle page vierge dans laquelle j'ai copié-collé le fond de page avec l'outil "Modifier" et ensuite j'ai copié-collé (en place) les champs de formulaires avec l'outil de sélection.
Enregistrer-sous, terminé.

Les bonnes vieilles techniques d'avant l'optimiseur d'Acrobat sont toujours efficaces.
 :Smiley03:
: 1 2 3 ... 10