Donnez vie à vos documents numériques !
 

Duplication de champs et de page dans un formulaire

abracadabraPDF Forums PDF – Général Duplication de champs et de page dans un formulaire

  • Ce sujet est vide.
12 sujets de 1 à 12 (sur un total de 12)
  • Auteur
    Messages
  • #45118
    Cln
    Membre

    Bonjour,

    Je lis, je teste et ça ne marche pas comme je veux…et de toute manière, le formulaire initial sur lequel je voulais travailler est trop plein de champs, j’abandonne pour l’instant.

    Par contre, il y a des détails qui me chiffonnent.
    Concernant la convention de dénomination des champs, comme dans le tutoriel je créé ma première ligne, prix quantité total et sur total je calcule prix*quantité
    Je duplique, les .x se mettent bien à la suite des noms de champs mais le calcul est « bloqué » sur la première ligne, et je dois les reprendre un par un… j’ai du sauté une étape mais laquelle ?

    Pour la duplication des pages, il est dit qu’on peut renommer facilement l’ensemble des champs avec un préfixe, j’ai pas vu comment ?
    Et enfin quand je duplique la page, j’ai encore le souci au niveau des calculs, qui restent bloqués sur le modèle prix*quantité sans tenir compte des préfixes…

    Je joins mon modèle imparfait, en sachant que sur la première page j’aurais aimé en plus un Total de toutes les pages, créées et à venir…

    Je rappelle que je suis une quiche en code, mais que j’arrive parfois à en adapter…

    #58657
    Merlin
    Maître des clés

    Je duplique, les .x se mettent bien à la suite des noms de champs mais le calcul est « bloqué » sur la première ligne, et je dois les reprendre un par un… j’ai du sauté une étape mais laquelle ?

    Non, tu as tout bon. L’ajustement doit se faire manuellement, on ne peut pas ajuster les scripts en même temps qu’on duplique les champs.
    Ce serait trop facile !  :geek:

    Pour la duplication des pages, il est dit qu’on peut renommer facilement l’ensemble des champs avec un préfixe, j’ai pas vu comment ?

    C’est automatique et par défaut. Regarde dans ton doc, chaque fois qu’on ajoute une page les champs qui sont dessus prennent le préfixe « P1. », « P2. », etc.

    Et enfin quand je duplique la page, j’ai encore le souci au niveau des calculs, qui restent bloqués sur le modèle prix*quantité sans tenir compte des préfixes…

    C’est effectivement un problème.
    Tu devrais prier pour que Brumbies ou Alex ou … lisent ce sujet…
    :joker:

    #58658
    Cln
    Membre

    Pour l’ajustement manuel, effectivement ce serait trop facile quoique… je prie pour que ça évolue !!

    Pour le deuxième point, c’est en lisant le tutoriel
    /http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/dupliquer-des-pages-dans-un-formulaire-pdf/
    que j’ai cru qu’on pouvait soi même changer manuellement le nom de plusieurs champs juste pour ajouter le préfixe, pour créer le modèle non caché.

    Pour le troisième point, je prie aussi !  :priere: :jerisjaune:

    #58659
    Merlin
    Maître des clés

    Pour le deuxième point, c’est en lisant le tutoriel

    Dans ce tuto la méthode utilisée ajoute des suffixes, pas des préfixes.
    :Smiley03:

    #58660
    Cln
    Membre

    Je pense qu’on est en plein quiproquo sur le tutoriel…

    -> placer plusieurs champs = suffixe
    -> dupliquer template = préfixe

    n’est-ce pas ?

    #58661
    Merlin
    Maître des clés

    Scuze.  :Ooops:

    Effectivement je me suis trompé de tuto en répondant trop vite.
    :bonjour:

    #58662
    Cln
    Membre

    Ouf…  :Smiley03:

    #58663
    brumbies
    Membre

    Bonjour,

    Et enfin quand je duplique la page, j’ai encore le souci au niveau des calculs, qui restent bloqués sur le modèle prix*quantité sans tenir compte des préfixes…

    En fait, comme tu as pu le constater seul les champs peuvent changer de nom en fonction des différentes pages dupliquées…
    du coup, il faut le prévoir au niveau d’un script de calcul personnalisé du type :

    Code:
    this.getField(« P »+this.pageNum+ ».liste.Stotal.0″).value = this.getField(« P »+this.pageNum+ ».liste.quant.0″).value * this.getField(« P »+this.pageNum+ ».liste.prix.0″).value;

    le script va chercher le numéro de page de la page dupliquée, ce qui permet de gérer le préfixe
    cela nécessite que lorsque tu dupliques ton template cela soit toujours en fin de document, que tu ne supprimes pas entre temps une page.

    je te joins ton fichier auquel j’ai ajouté cette ligne uniquement au niveau du champs Stotal.0 (on peut l’adapter aux autres sommes)
    De plus, j’ai modifié ton bouton « Nouvelle » ou j’ai changé ton script en préférant :

    Code:
    this.spawnPageFromTemplate(« liste »,this.numPages, true, false);

    :Smiley01:

    #58664
    Merlin
    Maître des clés

    Je note ça tout de suite dans mes petits papiers PDF.
    :bravo:

    #58665
    club3dtext
    Membre

    C’est vraiment très apprécié, mais si je veux appliqué ce script pour un formulaire comment dois-je possédé? MERCI POUR TON AIDE!

    #58666
    brumbies
    Membre

    Bonjour,
    regarde les exemples que l’on met à jour…

    Code:
    this.getField(« P »+this.pageNum+ ».liste.Stotal.0″).value = this.getField(« P »+this.pageNum+ ».liste.quant.0″).value * this.getField(« P »+this.pageNum+ ».liste.prix.0″).value;

    ce code est à intégrer au niveau de ton champs Stotal.0 présent dans ton modèle de page (template).
      => propriétés du champs / onglet Calcul / Script de calcul personnalisé
    Ensuite il faut le dupliquer sur les autres champs Stotal (en modifiant le .0 par .1, .2, .3 …)

    Pour faire la somme de tous tes champs totaux Stotal.x tu peux utiliser le code ci-dessous appliqué au champs SStotal:

    Code:
    var total = 0;
    for (var i = 0; i<= 2; i++) // 2 étant à adapter en fonction du nombre de champs Stotal.x
    total = total + this.getField(« P »+this.pageNum+ ».liste.Stotal. »+i).value;

    this.getField(« P »+this.pageNum+ ».liste.SStotal »).value = total;

    Pour faire la somme de tous les SStotal tu peux utiliser le code ci-dessous, appliqué sur le champs Total :

    Code:
    var global = 0;

    if((this.numPages – 1) != 0)
    for(var i = 1; i <= (this.numPages - 1); i++)
      global = global + this.getField(« P »+i+ ».liste.SStotal »).value;
     
    this.getField(« Total »).value = global;

    Attention à l’ordre de calcul de tes champs sinon les différents totaux peuvent avoir un temps de décalage…

    J’ai mis à jour ta maquette.
    A toi de jouer…
    :Smiley01:

    #58667
    Cln
    Membre

    Ok et merci, je regarde ça de tout près dès que je suis tranquille !!  :Smiley03:

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