Donnez vie à vos documents numériques !
 

formulaire: remplir automatiquement un champ en fc d’un choix de menu déroulant

abracadabraPDF Forums PDF – Général formulaire: remplir automatiquement un champ en fc d’un choix de menu déroulant

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45858
    célé
    Membre

    Bonjour,

    Depuis peu je réalise mon premier formulaire pdf. Je travaille actuellement avec Foxit PhantomPDF.
    Je n’ai pas de réelle connaissance en JS mais je commence à apprivoiser ce langage en m’inspirant de scripts trouvés ici et là. Et je trouve de précieux conseils sur ce forum ! Merci au passage à tous ceux qui apportent leur aide gracieusement !  :bravo:

    Voilà mon problème du jour, pour lequel je ne parviens pas à me débrouiller seule, par manque de connaissances en JS :
    La personne qui remplit mon formulaire renseigne d’abord son adresse et don téléphone dans des champs textes nommés “Adresse_etudiant” et “Tel_etudiant”. Un peu plus loin, elle doit faire un choix dans un menu déroulant appelé “Lien_etudiant_resp_legal_1”. Si elle choisit “l’étudiant lui-même (majeur)” (premier choix de la liste) alors je souhaiterais que les 2 champs suivants, à savoir “Adresse_resp_legal_1” et “Tel_resp_legal_1” soient remplis automatiquement avec les mêmes valeurs que les champs remplis au départ (“Adresse_etudiant” et “Tel_etudiant”) pour ne pas que la personne ait à renseigner une 2e fois les mêmes informations.
    Voilà comment je formulerais “en français” le script :
    Si choix de “Lien_etudiant_resp_legal_1” = choix 1 (ou “l’étudiant lui-même (majeur)”), alors valeur de “Adresse_resp_legal_1″= valeur de “Adresse_etudiant” et valeur de “Tel_resp_legal_1” = valeur de “Tel_etudiant. Sinon… rien.

    Merci d’avance pour votre aide !

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

    Bonjour et bienvenue.

    À placer en script de validation dans la liste déroulante :

    Code:
    if (event.value == “l’étudiant lui-même (majeur)”) {
        this.getField(“Adresse_resp_legal_1”).value = this.getField(“Adresse_etudiant”).value;
        this.getField(“Tel_resp_legal_1”).value = this.getField(“Tel_etudiant”).value;
    }

    Il est important que l’option “Valider la valeur sélectionnée immédiatement” soit cochée dans les Propriétés : Options de la liste.

    #63914
    célé
    Membre

    Merci beaucoup ! Il me manquait notamment la notion “event.value”.
    Une question pour m’endormir moins bête : quelle différence entre == et = dans le script proposé ?
    Et une question pour aller un peu plus loin : si l’utilisateur choisit “l’étudiant lui-même (majeur)” (et donc que les 2 champs suivants se complètent) mais que c’est une erreur et qu’il choisit ensuite un autre choix, les champs restent complétés, est-ce qu’on pourrait les faire redevenir vierges ?
    Merci !

    #63915
    Merlin
    Maître des clés

    Et une question pour aller un peu plus loin : si l’utilisateur choisit “l’étudiant lui-même (majeur)” (et donc que les 2 champs suivants se complètent) mais que c’est une erreur et qu’il choisit ensuite un autre choix, les champs restent complétés, est-ce qu’on pourrait les faire redevenir vierges ?

    Code:
    if (event.value == “l’étudiant lui-même (majeur)”) {
        this.getField(“Adresse_resp_legal_1”).value = this.getField(“Adresse_etudiant”).value;
        this.getField(“Tel_resp_legal_1”).value = this.getField(“Tel_etudiant”).value;
    }
    else {
        this.getField(“Adresse_resp_legal_1”).value = “”;
        this.getField(“Tel_resp_legal_1”).value = “”;
    }

    #63916
    Merlin
    Maître des clés

    Une question pour m’endormir moins bête : quelle différence entre == et = dans le script proposé ?

    == signifie “est égal à “
    = signifie “devient égal à”

    Ce qui nous donne en français :
    Si (A est égal à B) {
    la valeur du champ X devient égale à la valeur du champ Y
    }
    Sinon {
    la valeur du champ X devient égale à rien
    }

    Voir : https://www.w3schools.com/js/js_comparisons.asp

    #63917
    célé
    Membre

    Merci beaucoup !!
    Et à bientôt pour d’autres questions ;)

    #63918
    célé
    Membre

    Bonjour,
    J’utilise avec succès le code proposé pour remplir automatiquement certains champs si un choix donné est fait dans le menu déroulant. Mais un petit détail me chiffonne : lorsqu’il s’agit d’un numéro de téléphone commençant par 0, la “copie” qui en est faite ne comporte plus le 0.
    Je ne souhaite toutefois pas imposer un format pour le champ de numéro de téléphone au cas où il y ait des cas de numéro étrangers qui ne soient pas sur le même format qu’un numéro français. Auriez-vous une idée ? (je n’en doute pas ;))
    Merci

    #63919
    Merlin
    Maître des clés

    J’aurais dû y penser.  :oh:

    C’est toute la différence entre value et valueAsString, quand value est un chiffre le zéro directeur est supprimé car sans intérêt, alors que valueAsString contient la chaine de caractères complète, indépendamment de ce qu’elle représente (chiffre, texte…).
    Voir : https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/#t=Acro12_MasterBook%2FJS_API_AcroJS%2FField_properties.htm&rhsearch=valueAsString&rhhlterm=valueAsString&rhsyns=%20

    Il faut donc modifier le script ainsi :

    if (event.value == “l’étudiant lui-même (majeur)”) {
        this.getField(“Adresse_resp_legal_1”).value = this.getField(“Adresse_etudiant”).valueAsString;
        this.getField(“Tel_resp_legal_1”).value = this.getField(“Tel_etudiant”).
    valueAsString;
    }
    else {
        this.getField(“Adresse_resp_legal_1”).value = “”;
        this.getField(“Tel_resp_legal_1”).value = “”;
    }

    Ça ne changera pas grand-chose pour le champ Adresse mais c’est une question de principe.
    :Smiley03:

    #63920
    célé
    Membre

    Bien sûr ! J’avais bien cette intuition qu’il fallait signifier qu’on voulait non pas le nombre mais la chaîne de caractères mais encore une fois mon ignorance en javascript ne me permettait pas d’aller plus loin… Bon, tout ceci me fait dire qu’il faut vraiment que j’apprenne un peu de javascript !
    Encore un grand merci en tout cas !

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