Donnez vie à vos documents numériques !
 

Editeur javascript pour ajouter des scripts/balises : ça ne veut pas !

abracadabraPDF Forums PDF – Général Editeur javascript pour ajouter des scripts/balises : ça ne veut pas !

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45413
    shauko
    Membre

    Bonjour,

    Ayant beaucoup de champs à paramétrer dans mon fichier de travail (aussi bien en scripts de validation pour la mise en couleur des textes et fonds, qu’en scripts de calculs personnalisés, mais également en scripts d’actions). …. bref beaucoup de cases différentes pour beaucoup de champs avec à chaque fois qu’un mot ou deux à changer.

    J’ai donc regardé sur le forum si il était possible de modifier le bloc général “Tous les scripts Javascript” pour ajouter directement mes scripts aux champs qui n’en disposent pas encore.
    A priori, certains y arrivent, entre certaines balises seulement pour ce qui est des modifications, ou alors en faisant un “sélectionner tout / effacer / coller”.
    Après plusieurs tentatives infructueuses pour ma part (aucun ajout/modif prise en compte, SAUF SI ON MODIFIE UNIQUEMENT ENTRE LES BALISES “//” EXISTANTES, là oui cela fonctionne), j’ai alors essayé l’éditeur externe (notepad++, et PSPad).

    Mon fichier Js s’ouvre bien en temporaire, je fais mes ajouts, j’enregistre et ferme, mais rien n’y fait ce n’est pas pris en compte.

    Est-ce que j’ai oublié une étape ou loupé un détail important dans la manip’ à effectuer ? mal paramétré mes préférences (cf PJ) ? ou pb avec le logiciel (Acrobat DC Pro à jour) ?
    Ou ne peut-on simplement pas ajouter de nouvelles balises “//” et simplement modifier uniquement entre les balises “//“ (et donc ne rien créer comme c’est suggéré pourtant dans l’en-tête de l’éditeur interne.

    Merci de votre retour pour ceux qui ont galéré comme moi, car si je pouvais éviter de me palucher chaamps par champs 2 à 3 onglets différents pour juste changer 2 mots ce serait abracadabresque ! :)

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

    Bonjour.

    On ne peut pas affecter ni modifier un calcul ou une validation dans plusieurs champs en même temps, c’est pour ça que je préfère l’action “champ désactivé” quand c’est possible.

    Je n’utilise jamais la fonction “tous les JavaScripts”, donc je ne vais pas pouvoir t’aider.

    Par-contre, quand on doit utiliser un même script avec juste un nom qui change le mieux est de placer ledit script en fonction et de placer “le nom qui change” en variable.
    Ça te parle ?

    #60664
    shauko
    Membre

    Bonjour,

    Merci de ce retour Merlin.
    Bon aie aie, donc je ne peux à priori pas scripter sur un même bloc quel qu’il soit tous mes champs en une belle prose de code, c’est embêtant.

    Je vois effectivement de quoi peut relever la fonction et une variable, malheureusement je pense qu’on rentre là dans le niveau supérieur de script et je ne maîtrise absolument pas lol.
    Ceci dit si je comprends bien, en utilisant une fonction et une variable je pourrais donc utiliser un seul et même code pour tous mes champs ?

    #60665
    Merlin
    Maître des clés

    Prenons un exemple simple.

    On a besoin d’une fonction de calcul pour additionner deux champs (j’avais bien dit simple  :Smiley03:) mais ce ne sont pas toujours les deux mêmes champs qu’il faut additionner.

    On va donc utiliser un script de calcul basé sur deux variables représentant les champs pour faire une somme dans un 3e champ :

    Code:
    event.target.value = champ1.value + champ2.value;

    Script qu’on va mettre en fonction dans un script de document :

    Code:
    function monCalculPerso() {
    event.target.value = champ1.value + champ2.value;
    }

    Ensuite dans chaque champ concerné on place ce script :

    Code:
    var champ1 = this.getField(“nomdupremierchamp”);
    var champ2 = this.getField(“nomdudeuxièmechamp”);
    monCalculPerso();

    Quand on effectue des calculs ou des opérations compliquées ça a l’avantage de simplifier la maintenance car il n’y a qu’un seul script (de document) à modifier : la fonction.
    Et des opérations complexes placées en fonction (et donc chargées en RAM dès l’ouverture du document) s’effectuent plus rapidement que placées individuellement dans des champs (chargées à la demande).

    #60666
    shauko
    Membre

    Alors pour te montrer que j’écoute attentivement et que je suis lol, j’ai joint un exemple de ce que tu m’indiques.

    C’est fonctionnel et je comprends bien l’intérêt de maintenance et de chargement de page. Vu que j’ai beaucoup de champs dans mon fichier je vais utiliser cette façon de procéder, ce sera toujours un plus.

    Mais ceci dit, il y a tout de même le passage laborieux et obligatoire de paramétrer les champs un à un si je ne m’abuse (ici de la “colonne calcul” dans mon exemple et imaginons que j’en ai 50 lignes comme ça), et donc même avec une fonction et des variables, on ne peut paramétrer directement et sur une même feuille de script l’ensemble des champs. Histoire de gagner beaucoup de temps et d’avoir tout sous les yeux. Me trompe-je ? :p

    Et si tu peux m’expliquer en 2 mots ceci stp, je n’ai pas bien saisi :

    … c’est pour ça que je préfère l’action “champ désactivé” quand c’est possible.

    #60667
    Merlin
    Maître des clés

    Et si tu peux m’expliquer en 2 mots ceci stp, je n’ai pas bien saisi :

    Il faut d’abord que tu lises cet article (jusqu’au bout) et que tu vois son schéma très explicite qui vaut mieux qu’un long discours :
    http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/lordre-dexecution-des-evenements-dans-les-champs-de-formulaire-pdf/

    #60668
    Merlin
    Maître des clés

    Dans ce cas c’est encore plus simple, il n’y a pas besoin de passer des variables.

    On va utiliser une fonction dans chaque champ calcul.
    Cette fonction contient un script de calcul qui va additionner dans le champ calcul le champa et le champb correspondant à son numéro de rangée.

    Code:
    function monCalculPerso() {
    var num = event.target.name.replace(/calcul./,””);
    event.value = this.getField(“champa.” + num).value + this.getField(“champb.” + num).value;
    }

    Ce script détecte le numéro suffixe du champ calcul concerné et l’affecte à la suite du nom du champa et du champb avant de les additionner.

    Et comme on ne peut pas affecter un script de calcul à plusieurs champs en même temps on place la fonction avant de dupliquer les champs calcul, en utilisant la Convention de dénomination des champs de formulaire.
    Voir ce tuto : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/duplication-rapide-de-champs-de-formulaire/

    Cerise sur le gâteau : les champs total colonne qui ne requièrent qu’une simple coche dans les calculs grâce à ladite Convention de dénomination des champs de formulaire.
    :extra:

    #60669
    shauko
    Membre

    Ouhlà j’ai du boulot :)

    Alors le temps de potasser tout ça et je reviens donner mes impressions et j’en suis déjà sûr mes plus vifs remerciements ! ;)
    (somme toute déjà bien mérités, c’est vraiment sympa le temps que vous accordez à nos soucis de noobs du javascript lol)

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