Required _ Champs Obligatoire_Syntax Error  (Lu 471 fois) Partager ce sujet Imprimer

1 B


MALDF  11 mai 2021 : 13:16


Bonjour à tous,


Avant de poster ce message , j'ai fait des recherches sur le forum qui traite les problème de champs obligatoire, et je vous avoue que ce n'est pas évident.
Pour faire simple, je voulais rendre un seul champs Obligatoire sur mon PDF, donc j'ai utilisé la propriété du champs et j'ai coché simple "Obligatoire" .. oui cette option ca marche juste avec le submit form. d'accord.


Du coup après recherche j'ai trouvé le code ci-dessous posté par Merlin :


if (event.target.value != "") {
this getField("nomdemonchamp").required = true ;
}
else {
this getField("nomdemonchamp").required = false;
}
Que je compte de l'intégrer sur un bouton impression, onglet : Action > souris entrée, j'appuie sur Ok .. un message syntax error s'affiche : à la ligne 3


et le code : this.print();

sur l'onglet Action > souris relâchée.


Je ne sais même pas si ma démarche est bonne : mais je pense que si un script peut refuser la valeur zéro, ou un vide d'un champs et affiche une alerte avant de passer à la case suivante.


Merci pour votre aide.
Bien à vous.

IP archivée


Merlin  11 mai 2021 : 14:18

Bonjour

Ce script vérifie la valeur du champ cliqué avant d'agir en conséquence… Mais un champ de type bouton ne peut pas avoir de valeur, d'où le message d'erreur.

Le vrai problème est en amont : si aucun logiciel (donc pas seulement Acrobat) ne bloque l'impression par rapport aux champs obligatoires (contrairement à la fonction Submit ou à l'envoi par email) ce n'est pas un hasard.

1. Rien ne peut empêcher l'utilisateur d'imprimer normalement via l'interface de son logiciel (menu ou raccourci-clavier), donc sans utiliser le bouton "Imprimer".


2. Un utilisateur peut avoir plein de bonnes raisons pour vouloir imprimer un formulaire tel quel et finir de le compléter avec un stylo, il serait donc malvenu de vouloir l'en empêcher.
En général lors de l'impression on utilise un script qui vérifie si les champs obligatoires sont tous remplis, et s'il ne le sont pas on affiche un avertissement à l'utilisateur mais sans le bloquer pour autant.

Et comme il faut que ça fonctionne même si l'utilisateur n'utilise pas le bouton qu'on lui a préparé on doit placer le script de vérification non pas dans le bouton mais en script d'évènement "Quand le document sera imprimé".
Ce qui permet à l'utilisateur de pouvoir éventuellement ensuite annuler l'impression dans la boite de dialogue d'impression qui suit immédiatement l'alerte.
Voir (paragraphe 4) : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/


3. On peut donc aussi plus simplement se contenter d'afficher systématiquement une alerte lors de l'impression, donc sans vérification préalable des champs obligatoires, par exemple en plaçant ce script en script d'évènement "Quand le document sera imprimé" :

app.alert("Merci de vérifier que tous les champs obligatoires soient correctement remplis avant l'envoi.\n\nAucun formulaire incomplet ne sera pris en compte.");

 :Smiley15:

IP archivée


MALDF  11 mai 2021 : 15:52

Bonjour Merlin,
Merci pour ta réponse.
En effet, je veux pas désactiver l'impression, mais juste envoyer un message d'alerte concernant mon champ qui sera obligatoire à la saisie ( un nombre supérieure ou égale 1 ).
Du coup J'ai pensé à mettre une validation avec une fourchette de 1 à 10000000.
Mais le problème c'est que : si l'utilisateur ne marque rien , il peut continuer à remplir les autres cases .. et ça va fausser tous les autres cases .


Sinon ce code, je le place ou ?


app.alert("Merci de vérifier que tous les champs obligatoires soient correctement remplis avant l'envoi.\n\nAucun formulaire incomplet ne sera pris en compte.")

car ton code me donne une idée : de le faire apparaitre un message si l'utilisateur ne rempli pas le champ concerné si c'est possible.


Merci d'avance.

IP archivée


Merlin  11 mai 2021 : 16:05

Citer
Du coup J'ai pensé à mettre une validation avec une fourchette de 1 à 10000000
Il suffit de laisser la valeur maximum vide pour ne pas imposer de limite supérieure.


Citer
Mais le problème c'est que : si l'utilisateur ne marque rien , il peut continuer à remplir les autres cases .. et ça va fausser tous les autres cases .
Auquel cas le meilleur moyen serait peut être de faire apparaitre les autres cases quand l'utilisateur clique sur celle qui est obligatoire…


Citer
Sinon ce code, je le place ou ?
Je me cite : "en plaçant ce script en script d'évènement "Quand le document sera imprimé"
Voir (paragraphe 4) : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/
"

 :Smiley03:

IP archivée


MALDF  11 mai 2021 : 16:42

Justement merlin,
je ne vois pas ou placer les script évènement ? est sur :
  • Le bouton ou
  • mon champ en question ( en action ou validation ? )

IP archivée


MALDF  11 mai 2021 : 16:58

C'est j'ai trouvé :
Sur le champs en question : Propriété > Action > Déclencheur > Champ activé > exécuter un script.




app.alert("Merci de vérifier que tous les champs obligatoires soient correctement remplis avant l'envoi.\n\nVeuillez reporter le nombre Total des élèves de votre établissement.");

IP archivée


MALDF  11 mai 2021 : 17:13

Citer
Ce script vérifie la valeur du champ cliqué avant d'agir en conséquence… Mais un champ de type bouton ne peut pas avoir de valeur, d'où le message d'erreur.
Justement ce code je l'ai mis en Action en exécutant un script d'un champ et pas un Bouton.



if (event.target.value != "") {
this getField("Champ1").required = true;
}
else {
this getField("Champ1").required = false;
}

IP archivée


bebarth  11 mai 2021 : 19:42

app.alert("Merci de vérifier que tous les champs obligatoires soient correctement remplis avant l'envoi...
Toujours l'éternelle ambiguïté : indicatif ou subjonctif ???
@+
 :bonjour:

IP archivée


Merlin  12 mai 2021 : 00:06

Toujours l'éternelle ambiguïté : indicatif ou subjonctif ???
J'avoue que j'ai hésité…
 :doute:

IP archivée


Merlin  12 mai 2021 : 00:11

C'est j'ai trouvé : Sur le champs en question : Propriété > Action > Déclencheur > Champ activé > exécuter un script.
J'ai expliqué ci-dessus pourquoi il ne faut pas le mettre dans le champ !  :Smiley11:  :oh:
Il faut le placer en script d'évènement, il faut cliquer sur le lien que j'ai donné ci-dessus et aller au paragraphe 4 pour trouver les explications.

IP archivée


MALDF  12 mai 2021 : 06:02

Merci Merlin,
j'avais du mal à te comprendre, mais j'ai pas compris le paragraphe 4, car je ne trouve pas ce que je cherche.
mais bon pour tout le monde Merlin voulait dire ca : ( voir pièce jointe )  :jerisjaune:
Pour ajouter un script évènement :





IP archivée


Merlin  12 mai 2021 : 09:22

 :extra:

IP archivée