Donnez vie à vos documents numériques !
 

Script de validation de formulaire

abracadabraPDF Forums PDF – Général Script de validation de formulaire

  • Créateur
    Sujet
  • #74135
    falafhell
    Participant

    Bonjour à toutes et à tous,

    Je suis en train de préparer un formulaire pdf incluant un script de validation des champs obligatoires : l’objectif est de conditionner l’enregistrement du document au remplissage de tous les champs obligatoires (c’est un peu absurde, je sais, mais c’est le cahier des charges qui m’est imposé…). Pour ce faire, j’ai intégré le script ci-dessous en actions de document (« Le document sera enregistré ») et créé un bouton « enregistrer » auquel j’ai également associé le script (« exécuter un script », souris relâchée).

    Voici le script (tel qu’intégré dans le document en PJ) :

    var champsObligatoires = [“date”, “text1”, “text2”, “montant1”, “montant2”];

    function validerChampsObligatoires() {

    var formulaire = this;

    for (var i = 0; i < champsObligatoires.length; i++) {

    var nomChamp = champsObligatoires;

    var champ = formulaire.getField(nomChamp);

    if (champ.value === “”) {

    app.alert(“Veuillez remplir tous les champs obligatoires.”);

    return false;

    }

    }

    return true;

    }

    this.getField(“Bouton_enregistrer”).setAction(“MouseUp”, “this.getAnnots()[0].submitForm({cURL: true});”);

    this.getField(“Bouton_enregistrer”).setAction(“MouseUp”, “validerChampsObligatoires();”);

    Premier problème : le script fonctionne une fois intégré, mais dès que je ferme le formulaire et que je l’ouvre à nouveau, il ne fonctionne plus…

    Par ailleurs, j’aimerais faire évoluer le script pour que :

    1. Tous les champs obligatoires soient pris en compte sans avoir à les lister comme variables (le formulaire sur lequel je travaille en compte un certain nombre de toutes natures),
    2. La fonction de validation du formulaire soit également associée aux commandes « enregistrer » et « enregistrer sous » sous Acrobat Reader.

    J’ai cherché dans les contributions du forum et ailleurs sans trouver de quoi résoudre mon problème… Quelqu’un peut-il me mettre sur la bonne voie ? Tous les bons conseils seront les bienvenus (et je sais qu’ils sont nombreux dans ce forum de très grande qualité, dont je salue les auteurs).

    Merci d’avance pour votre aide 😉

    Attachments:
    You must be logged in to view attached files.
Affichage de 4 réponses de 1 à 4 (sur un total de 4)
  • Auteur
    Réponses
  • #74137
    Merlin
    Maître des clés

    Bonjour

     

    Ci-joint, j’ai ajouté deux fonctions en script de document, je te laisse les examiner et modifier le message d’alerte.

    La fonction de vérification signale les champs non remplis en rouge, la deuxième fonction sert à enlever le contour rouge quand on clique dans les champs concernés. Elle est appelée par l’évènement “Champ activé / On focus”.
    C’est plus intuitif pour l’utilisateur mais tu peux supprimer la ligne qui ajoute les contours rouge si tu préfères.

    L’inconvénient de mettre le contrôle en évènement “Doc sera enregistré” c’est qu’il faut désactiver JavaScript (Préférences : JavaScript) pour pouvoir enregistrer le document final avec les champs vides sans les contours rouge.

    Parce-qu’il faut savoir qu’une fonction/action placée en évènement “Doc sera enregistré” (ou “Doc sera imprimé”) n’empêche pas son enregistrement (ou son impression), ça ne fait qu’avertir l’utilisateur.

    Et c’est tant mieux car il peut avoir plein de bonnes raisons pour enregistrer son document avant de l’avoir complètement rempli.

     

    Attachments:
    You must be logged in to view attached files.
    #74140
    falafhell
    Participant

    Bonjour Merlin,

    Merci pour ton intervention, ça marche très bien !

    En revanche, je ne savais pas que le fait de placer une fonction en “doc sera enregistré” a uniquement valeur d’avertissement et non d’interdiction : dans ce cas, que faudrait-il faire pour vraiment empêcher l’enregistrement tant que les champs obligatoires du formulaire ne sont pas tous remplis ? Je partage complètement ton point de vue sur la liberté d’enregistrer à tout moment pour l’utilisateur, mais je dois répondre à une demande assez claire en ce sens…

    #74141
    Merlin
    Maître des clés

    On ne peut rien faire contre ça, il faudra l’expliquer à ton client.

    Sauf peut-être en développant un vrai plugin en C++, en le faisant certifier par Adobe, et en l’installant sur tous les Acrobat Reader de tous les utilisateurs. Mais c’est une autre paire de manches et même en supposant que ce soit techniquement possible rien ne garanti qu’Adobe l’accepterait.

     

    #74150
    falafhell
    Participant

    Oui, je comprends. Merci pour ces éclaircissements.

     

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