Affichage d'un champ de texte si un code est saisi  (Lu 312 fois) Partager ce sujet Imprimer

1 B


michel c.  16 juin 2021 : 17:47

Bonjour, je souhaiterais qu'un champ soit affiché lorsque le bon code est saisi par l'utilisateur avec également une boite de dialogue qui s'ouvre pour dire que le code est bonSi le code est faux une boite de dialogue s'ouvre pour dire qu'il est faux et le champ de saisi se remet à 0..
Voici mon code :.
var code = 1024;
var cSaisie = (this.getField("codesaisi").value);

if (cSaisie = code) {
app.alert({cMsg:"code ok", nIcon:1});
    this.getField("bravo").display = display.visible;
}

else {
app.alert({cMsg:"code faux", nIcon:1});
    this.getField("codesaisi").value = 0;
    this.getField("bravo").display = display.hidden;
}
.
.et le fichier :.Test3.
.
Merci

IP archivée


michel c.  16 juin 2021 : 18:20

Avec ce code ça à l'air de marcher :
var cSaisie = Number(this.getField("codesaisi").value);

if (cSaisie == 1024) {
app.alert({cMsg:"code ok", nIcon:1});
    this.getField("bravo").display = display.visible;
}

else {
app.alert({cMsg:"code faux", nIcon:1});
    this.getField("codesaisi").value = 0;
    this.getField("bravo").display = display.hidden;
}
Je ne sais pas pourquoi cela ne marchait pas avec le précédent...

IP archivée


Merlin  16 juin 2021 : 20:26

Bonjour

La différence c'est :

if (cSaisie = 1024) {
if (cSaisie == code) {


= signifie "devient égal à",
== signifie "est égal à".

Voir : https://developer.mozilla.org/fr/docs/conflicting/Web/JavaScript/Reference/Operators_03cb648b1d07bbaa8b57526b509d6d55

IP archivée


michel c.  16 juin 2021 : 22:53

Merci pour le lien, je m'endormirais moins bête.
Autre question en passant : y a-t-il un moyen d'éviter les répétitions de ce style :

  this.getField("c1").display = display.visible;
    this.getField("c2").display = display.visible;
    this.getField("c3").display = display.visible;
    this.getField("c4").display = display.visible;
    this.getField("c5").display = display.visible;
    this.getField("c6").display = display.visible;
    this.getField("c7").display = display.visible;
En cherchant sur le forum, je viens de tester ça : var i = 0;
 for (i=0 ; i<=7 ; i++){
 this.getField("c" +i ).display = display.visible;
Mais sans grand succès
Test4
Merci





IP archivée


Merlin  17 juin 2021 : 09:22

Les champs sont nommés : c1 à c7
Mais la boucle commence à zéro…  :tutut:

Par ailleurs, il me semble bien qu'il ne faut pas utiliser d'opérateur double ( <= ) dans les boucles for


Essaie plutôt ça :

for (var i = 1; i < 8; i++) {
   this.getField("c" +i ).display = display.visible;
}

IP archivée


michel c.  17 juin 2021 : 12:57

ça marche très bien, merci.

IP archivée


Merlin  17 juin 2021 : 14:35

Si tu ne veux pas que le script cesse de fonctionner quand il rencontre un nom de champ qui n'existe pas il faut lui ajouter une protection :

for (var i = 1; i < 8; i++) {
   if (this.getField("c" +i ) != null) {
      this.getField("c" +i ).display = display.visible;
   }
}

IP archivée


michel c.  17 juin 2021 : 19:06

C'est pour le cas de figure ou je supprimerais un des champs c* ? Ce qui empêcherait le script de tourner ?

IP archivée


Merlin  17 juin 2021 : 19:25

Oui, un script non protégé s'arrête de fonctionner dès qu'il rencontre une erreur.
C'est ce qui t'es arrivé avec le script que tu as posté : le compte de la boucle for commençait à zéro mais il n'y a pas de champ "c0", donc le script s'arrête là.

Si tu avais activé la Console JS tu aurais vu le message d'erreur. Voir : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/console-javascript-d-acrobat/

IP archivée


michel c.  17 juin 2021 : 19:41

En réalité j'utilise PDF X-Change editor qui était moins cher pour notre établissement (scolaire). Il y a une console mais je ne l'avais jamais utilisée, je vais m'y mettre...

IP archivée