Donnez vie à vos documents numériques !
 

Gérer l’ordre d’exécution des scripts

abracadabraPDF Forums PDF – Général Gérer l’ordre d’exécution des scripts

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45417
    Constance
    Membre

    Bonjour à tous,

    Tout d’abord un grand merci pour ce forum, étant novice en formulaire et en javascript, cela m’a permis d’avancer même si je m’en excuse par avance, ce n’est peut être pas très propre!
    J’en arrive maintenant aux limites de mes capacités.

    Dans mon formulaire, j’ai des champs obligatoires, qui sont validés par une signature avant envoi par mail (
    Mon souci: la vérification des champs se fait mais après! la signature… et je ne comprends pas comment faire.

    console.clear();
    var variableObligat = “oui”;
    var emptyTest = /^s*$/;
      for(var i=0;i  var nameField = this.getNthFieldName(i);
      var fld = this.getField(nameField);
          if(fld.type==”text”) {
            if(fld.required) {
            console.println(“Nom du champ = ” + nameField + “rNom utilisateur : ” + fld.userName);
                if(emptyTest.test(fld.value)) {
                var alertOblig2 = “Champ “” + fld.userName + “”.nn” + “Ce champ est obligatoire. Merci de le corriger.”;
                app.alert({cMsg: alertOblig2, cTitle: “FO 0027”, nIcon: 1});
                var variableObligat = “non”;
                fld.strokeColor = rougeCorporate;
                fld.setFocus();
                break;
                }
                else {fld.strokeColor = color.transparent;}
            }
          }
      }
    if (variableObligat == “oui”) {
    console.println(“C’est tout bon pour les champs obligatoiresr”);
    // script d’envoi de l’email
    }

    var docName = this.documentFileName;
    var vDot = docName.indexOf(“.”,0);

    var fTitre = docName.substring(0,vDot);

    app.mailMsg(true, “”, “”, “”, “FO 0027″+”_”+fTitre, “Bonjour,nnVous trouverez ici (mettre le lien hypertexte du FO) la fiche de circulation citée en objet pour commentaires et signature.nLes tableaux de résultats ainsi que toute information utile (courbes, images, etc…) sont placés en PJ du pdf.nnBien cordialement,”);

    Je vous mets mon exemple de formulaire, ca sera surement plus clair  :joker:

    Merci d’avance à quiconque m’éclairera!

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

    Bonjour et bienvenue.

    Il faut savoir une chose : la propriété Obligatoire des champs n’est vérifiée qu’avant l’utilisation de la fonction “Submit”, et uniquement celle là.
    C’est pour ça qu’on doit utiliser du JavaScript si on veut détourner cette propriété pour vérifier les champs avant signature, impression, etc.

    Ce qui me crève les yeux dans ton script c’est que la vérification ne sert à rien puisqu’il ne se passe rien à la fin, et parce-que quoi qu’il arrive la fonction “Submit” est ensuite exécutée, avec préalablement la vérification des champs obligatoires puisque par nature c’est à ça que ça sert.

    C’est pour ça que tu as l’impression que la vérification ne s’effectue qu’après, mais en fait elle s’effectue deux fois : avant signature mais sans jamais réagir, et avant l’envoi, avec une réaction appropriée.

    En clair, tout ce qui se trouve après la dernière accolade fermante devrait se trouver à la place de :

    Code:
    // script d’envoi de l’email

    qui est une ligne désactivée.

    Comme ceci (non testé) :

    Code:
    console.clear();
    var variableObligat = “oui”;
    var emptyTest = /^s*$/;
      for(var i=0;i  var nameField = this.getNthFieldName(i);
      var fld = this.getField(nameField);
          if(fld.type==”text”) {
            if(fld.required) {
                console.println(“Nom du champ = ” + nameField + “rNom utilisateur : ” + fld.userName);
                if(emptyTest.test(fld.value)) {
                  var alertOblig2 = “Champ “” + fld.userName + “”.nn” + “Ce champ est obligatoire. Merci de le corriger.”;
                  app.alert({cMsg: alertOblig2, cTitle: “FO 0027”, nIcon: 1});
                  var variableObligat = “non”;
                  fld.strokeColor = rougeCorporate;
                  fld.setFocus();
                  break;
                }
                else {fld.strokeColor = color.transparent;}
            }
          }
      }
    if (variableObligat == “oui”) {
        var docName = this.documentFileName;
    var vDot = docName.indexOf(“.”,0);
    var fTitre = docName.substring(0,vDot);
    app.mailMsg(true, “”, “”, “”, “FO 0027″+”_”+fTitre, “Bonjour,nnVous trouverez ici (mettre le lien hypertexte du FO) la fiche de circulation citée en objet pour commentaires et signature.nLes tableaux de résultats ainsi que toute information utile (courbes, images, etc…) sont placés en PJ du pdf.nnBien cordialement,”);
        }

    D’autre part tu devrais faire attention aux caractères accentués dans les alertes, pour obtenir un affichage cohérent entre plateformes il faut utiliser l’encodage Unicode.
    Voir : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/pdf-javascript-et-unicode/

    Sinon tu risques d’obtenir du charabia de ce genre :

    ascii.png

    #60705
    bebarth
    Maître des clés

    bonjour,
    pour une novice, tu n’as pas choisi le plus simple !!!
    voici le lien d’un post avec un script d4alex qui pourrait être intéressant.
    http://abracadabrapdf.net/forum/index.php/topic,2615.msg14162.html#msg14162

    Merlin,
    est-ce que ce script pourrait-être adaptable ? perso, je n’ai pas réussi pour l’instant.

    @+
    :bonjour:

    #60706
    Merlin
    Maître des clés

    bebarth, je crois que Constance a déjà lu ce sujet, ou un autre, car je reconnais bien ce script.  :Smiley03:

    #60707
    Constance
    Membre

    Re-bonjjour,

    Merci beaucoup Merlin pour ton explication (je progresse, je progresse en js!) mais malheureusement, le fait de mettre le script d’envoi du mail au bon endroit ne bloque pas la signature pour autant…
    et effectivement, je n’ai pas inventé les scripts, j’ai consciencieusement fouillé le forum!

    J’en profite pour ajouter une requête: je travaille sur un réseau interne, et je bloque sur la commande à appeler pour afficher l’emplacement de mon formulaire (idéalement dans le corps du mail que j’envoie)…

    #60708
    Merlin
    Maître des clés

    malheureusement, le fait de mettre le script d’envoi du mail au bon endroit ne bloque pas la signature pour autant…

    Essaye de remplacer toutes les occurences du mot “variableObligat” par n’importe quoi d’autre qui ne commence pas par “var…”.
    De mémoire j’ai eu des ennuis très bizarres avec ce script, et avec cette variable qui ne voulait pas fonctionner.

    je bloque sur la commande à appeler pour afficher l’emplacement de mon formulaire (idéalement dans le corps du mail que j’envoie)…

    Code:
    this.path;
    #60709
    Constance
    Membre

    Juste un petit mot pour vous dire que j’ai réussi à m’en sortir en scindant le script en deux:
    une partie souris entrée pour tout ce qui est vérification des champs (ce qui empêche de cliquer sur le bouton avant que tous les champs soient remplis) et une partie souris entrée pour l’envoi du mail et donc la signature associée, ce qui ne me gêne pas puisque j’envoie le lien du formulaire et non le formulaire en lui-même.

    Merci encore pour votre aide!

    #60710
    Merlin
    Maître des clés

    :bonjour:

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