Donnez vie à vos documents numériques !
 

Formulaire remplissable après un choix sur bouton radio

abracadabraPDF Forums PDF – Général Formulaire remplissable après un choix sur bouton radio

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45345
    Mouss
    Membre

    Bonjour,

    J’ai parcouru le forum et ai déjà pu y trouver beaucoup d’informations utiles, merci beaucoup.

    Je travaille actuellement sur un formulaire qui fera appel à plusieurs champs conditionnels. Je bute cependant sur un premier problème  :mur:.
    Mon formulaire (en pj) débute par un bouton radio puis par des champs de texte. Les champs de texte ne devront être remplissables qu’après avoir fait un choix sur le bouton radio.

    J’ai tout d’abord introduit mes fonctions d’activation et de verrouillage des champs en script de document (inspiré du script de Thom Parker) :
            function activer(x) {
    // Next acquire the hidden field with the normal colors
    var i = this.getField(“Aspect”);
    x.readonly = false;
    // Restore Normal Colors
    x.fillColor = i.fillColor;
    x.borderColor = i.borderColor;
    x.textColor = i.textColor;
    }

            function verrouiller(y) {
    // Make field Read-Only
    y.readonly = true;
    // Set Grayed out colors
    y.fillColor = [“G”, 0.75]; y.borderColor = [“G”, 2/3]; y.textColor = [“G”, 0.5];
    }

    Je souhaite ensuite, au chargement de la page contenant les différents champs, que les champs texte soient verrouillés si le bouton n’est pas coché, j’ai donc introduit le script suivant à l’ouverture de la page :

    var choix=this.getField(“Etat”);
    var a1=this.getField(“A1”);
    var a2=this.getField(“A2”);
    var a3=this.getField(“A3”);
    var b1=this.getField(“B1”);
    var b2=this.getField(“B2”);
    var b3=this.getField(“B3”);

    if (choix.isBoxChecked=true) {
    activer(a1);activer(a2);activer(a3);
    activer(b1);activer(b2);activer(b3);
    }

    else {
    verrouiller(a1); verrouiller(a2); verrouiller(a3);
    verrouiller(b1); verrouiller(b2); verrouiller(b3);
        }

    Ce que je ne comprends pas, c’est qu’au chargement de la page, les champs s’activent alors que rien n’est coché…  :Euuuh:

    Pourriez-vous m’aider / m’expliquer où est l’erreur dans mon script ?

Affichage de 7 réponses de 1 à 7 (sur un total de 7)
  • Auteur
    Réponses
  • #60268
    Merlin
    Maître des clés

    Bonjour et bienvenue.

    Pour que les champs soient verrouillés à l’ouverture il faut les mettre en “Lecture seule”.
    Ça se fait dans : Propriétés du champ : Général

    #60269
    Mouss
    Membre

    Merci pour cette réponse extrêmement rapide Merlin  :jerisjaune:

    La ligne “y.readonly = true” de la fonction verrouiller ne se charge-t-elle pas déjà de cela ?

    En modifiant cette propriété sur mes champs texte, ils restent actifs au chargement de la page alors que le bouton radio n’est toujours pas coché  :doute: .

    #60270
    Merlin
    Maître des clés

    La ligne “y.readonly = true” de la fonction verrouiller ne se charge-t-elle pas déjà de cela ?

    Non, parce-que ton script ne fait que déclarer la fonction à l’ouverture, il ne l’exécute pas.
    Pour que la fonction soit exécutée dans la foulée il faut le dire juste après l’avoir déclarée :

    // déclaration de la fonction
    function verrouiller(y) {
    // Make field Read-Only
    y.readonly = true;
    // Set Grayed out colors
    y.fillColor = [“G”, 0.75]; y.borderColor = [“G”, 2/3]; y.textColor = [“G”, 0.5];
    }
    // exécution de la fonction
    verrouiller(y);

    Mais si la variable “y” n’est pas préalablement déclarée elle aussi ça ne fonctionnera pas.

    #60271
    Mouss
    Membre

    Effectivement au niveau du document je ne fais que déclarer la fonction (ainsi que la fonction “activer”), mais je demande bien à ce qu’elle soit exécutée au chargement de la page avec :

    // récupération de mon bouton radio
    var choix=this.getField(“Etat”);
    // récupération de mes champs texte
    var a1=this.getField(“A1”);var a2=this.getField(“A2”);var a3=this.getField(“A3”);var b1=this.getField(“B1”);var b2=this.getField(“B2”);var b3=this.getField(“B3”);if (choix.isBoxChecked=true) {activer(a1);activer(a2);activer(a3);activer(b1);activer(b2);activer(b3);}else {verrouiller(a1); verrouiller(a2); verrouiller(a3);verrouiller(b1); verrouiller(b2); verrouiller(b3);    }

    Lorsque j’ai ajouté le script, l’aspect des champs a changé, conformément instructions de ma fonction “activer” alors que le bouton radio n’est pas coché… pourquoi n’est-ce pas la partie verrouillage qui est exécutée ?

    Dois-je peut-être mettre la partie avant la boucle if … else en script document ?

    #60272
    alex
    Participant

    Il faut écrire:
    if (choix.isBoxChecked(0)) ou bien
    if (choix.isBoxChecked(0)==true)
    et non pas:
    if (choix.isBoxChecked=true)

    #60273
    Mouss
    Membre

    Merci Alex.

    Mon ordi est en réparation et j’ai pas accès à Acrobat pro mais j’essaierai ça dès que je le récupère.

    #60274
    Mouss
    Membre

    Super Alex, ça marche!  :extra:

    Merci  :bonjour:

Affichage de 7 réponses de 1 à 7 (sur un total de 7)
  • Vous devez être connecté pour répondre à ce sujet.