Donnez vie à vos documents numériques !
 

Duplication Template et noms des champs utilisant des Javascript. – RÉSOLU

abracadabraPDF Forums PDF – Général Duplication Template et noms des champs utilisant des Javascript. – RÉSOLU

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #44299
    lagentejl
    Membre

    Bonjour,

    J’ai suivi tout vos conseils qui m’ont grandement aidé pour mon formulaire, mais je rencontre un petit (même gros) soucis.
    J’ai créé mon modèle de page et j’utilise la fonction Template.
    Quand je duplique ma page, tout se passe à merveille pour tous les champs sauf ceux où j’utilise des Scripts.

    Exemple pour l’apparition de la Date.
    Sur mon modèle mon script est this.getField(‘DATE’).value = util.printd(‘dd mmmm yyyy’, new Date());
    this.dirty = false;

    Mais après duplication le nom du champ devient P1.CS.DATECS étant le nom de mon modèle de page.
    Donc serait-il possible que le nom change automatiquement ou alors tout du moins pouvoir insérer le numéro de page dans le nom du champ dans mon script.
    J’espère avoir été assez clair.

    Je vous remercie pour vos réponses  :bonjour:
    .
    Bonne journée.

Affichage de 6 réponses de 1 à 6 (sur un total de 6)
  • Auteur
    Réponses
  • #53726
    maxwyss
    Membre

    Pour differencier les champs sur des pages spawned d’un modèle, le defaut est de additionner un prefix au nom des champs du modèle.

    Ce prefix se compose de P plus le numéro logique de la page crée au temps de la création, plus le nom du modèle (donc dans l’example “P1” (la deuxième page du document a été crée par l’action spawn), et le nom du modèle.

    La consequence pour des scripts est de prendre en compte ce prefix. Lors de l’action spawn, on sait le numéro de la page crée, et on pourrait donc sauvegarder ce prefix dans un array (IMHO, la methode la plus simple). Pour des calculations automatiques dans la page, on peut deduire le prefix du nom du champ contenant la calculation en utilisant event.target.name , par example

    var myPrefix = event.target.name.substring(0,event.target.name.indexOf(“DATE”)) ;

    (notez que cette ligne n’est pas verifiée; le point avant “DATE” devrait être inclus dans le prefix; si ce n’est pas le cas, utilisez

    …(event.target.name.indexOf(“DATE”)+1)

    HTH

    Max Wyss.

    #53727
    lagentejl
    Membre

    Merci Max pour ta réponse.

    Mais je ne comprends comment mettre myPreferix dans this.getField(‘DATE’).
    Et dans event.target.name.indexOf – name = doit être remplacer par le nom de mon modèle (ici CS) ou je laisse tel quel ?

    Je te remercie par avance pour réponse

    Bonne journée :bonjour:

    #53728
    maxwyss
    Membre

    Pour acceder un champ avec prefix, on utiliserait

    this.getField(myPrefix + “DATE”)

    is le prefix a été nommé “myPrefix”. Ceci fonctionne egalement si on travaille sans prefix; dans ce cas … myPrefix = “”

    Si on utilise le code indexOf(name), et on utilise le nom de base, is n’est pas necessaire de connaitre le nom du modèle, car il arrive automatiquement dans le prefix.

    HTH.

    Max Wyss.

    #53729
    lagentejl
    Membre

    Merci Max, mais j’ai encore des problèmes  :Smiley02:

    J’ai rentré ceci comme commande :

    var myPrefix = event.target.name.substring(event.target.name.indexOf(‘DATE’)+1);
    this.getField(myPrefix + ‘DATE’).value = util.printd(‘dd mmmm yyyy’, new Date());
    this.dirty = false;

    Et ça ne marche pas, pourrais tu me dire ce qui ne va pas ?
    Quand je clique dessus, la date n’apparait plus.

    Je te remercie par avance pour ta réponse  :bonjour:

    #53730
    lagentejl
    Membre

    En recommençant tout depuis le début, je me suis rendu compte que j’avais mal recopié la 1ère commande de ton 1er message.
    Maintenant ça marche.  :jerisjaune:

    Merci encore de ton aide Max  :bravo:

    #53731
    maxwyss
    Membre

    Je suis heureux d’entendre que ça marche maintenant.

    Max.

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