Donnez vie à vos documents numériques !
 

Scribus code JavaScript comment récupérer une valeur de liste déroulante

abracadabraPDF Forums PDF – Général Scribus code JavaScript comment récupérer une valeur de liste déroulante

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45586
    Sonya
    Membre

    Bonjour,

    Novice en javascript j’aurais besoin de votre aide.
    Exposition du projet :
    Création d’un formulaire interactif sous Scribus.
    Alors voici mon souci, j’ai un champs liste déroulante de 0 à 30 créé tout simplement (sans renseignement de code) qui se nomme tables.
    L’utilisateur peut choisir le nombre de tables au choix.
    Puis j’ai créé un champs texte plus loin où je veux que la sélection faite par l’utilisateur dans la liste déroulante apparaisse sans que j’intervienne.
    Pouvez vous m’aider ?
    Merci

Affichage de 24 réponses de 1 à 24 (sur un total de 24)
  • Auteur
    Réponses
  • #62158
    Sonya
    Membre

    Pour plus de précision j’ai vu sur le forum ce fichier qui correspond à ce que je veux mais je ne sais pas quel code javascript je dois rentrer et où sur quel champs et dans quel onglet.
    Bref je patauge  :mur:
    Merci

    #62159
    Merlin
    Maître des clés

    Bonjour et bienvenue.

    Il faut placer cette ligne de JavaScript en Script de calcul sur mesure dans les Propriétés du champ texte.
    Note bien que ce script importe la valeur de la liste déroulante, et non pas l’item affiché.

    Code:
    event.target.value = this.getField(“ListeDeroulante”).value;

    Où il faut remplacer “ListeDeroulante” par le vrai nom de la liste déroulante concernée.

    #62160
    bebarth
    Maître des clés

    bonjour,
    …et voilà le fichier pour afficher les 2 valeurs !
    Pour la valeur de la liste :
    var i=this.getField(“ListeDeroulante”).currentValueIndices;
    this.event.value=this.getField(“ListeDeroulante”).getItemAt(i,false);

    A éudier…
    @+
    :bonjour:

    #62161
    Merlin
    Maître des clés

    Bebarth : je vais garder ton doc. précieusement car je fais un blocage sur getItemAt et currentValueIndices.  :geek:

    Sonya : il ne devrait pas y avoir de “second” dans ta liste mais un “deuxième”. Car le second est aussi le dernier, on ne l’utilise que quand il n’y a que deux éléments.
    :Smiley03:

    #62162
    bebarth
    Maître des clés

    Merlin, tu peux garder le doc, j’en ai moi-même gardé plus d’un que tu as posté !
    Par contre, j’ai pas grand chose au sujet des bébés phoques…  :joker:
    @+
    :bonjour:

    #62163
    Merlin
    Maître des clés

    et voilà le fichier pour afficher les 2 valeurs !

    Comme Sonya travaille avec Scribus je suppose qu’elle n’a pas Acrobat Pro et que donc ce PDF ne lui sera pas très utile, faute de pouvoir l’examiner en profondeur…
    :Smiley00:

    #62164
    Sonya
    Membre

    Rebonjour,

    Oui Merlin je confirme que je ne vois pas en pdf les codes liés au javascript car j’ai scribus.
    Je vous joins mon fichier réel avec mon souci en format scribus et en format export pdf.
    Alors liste déroulante table je veux choisir en tant qu’utilisateur la quantité et dans champs texte à hauteur de la ligne montant de la caution à verser je veux voir le nombre choisi par l’utilisateur apparaître.
    Pour l’instant j’ai mis le code sur la liste déroulante “tables” dans onglet propriétés du champs / onglet Calculer / script de calcul sur mesure / en indiquant : event.target.value = this.getField(“tables”).value;
    Mais rien ne se passe.
    Que dois-je mettre dans champ texte s’intitulant “caution_tables” ?

    Je vous joins copies d’écran pour être plus précise.
    Merci d’avance pour votre aide précieuse.

    #62165
    Merlin
    Maître des clés

    Il faut que tu places ce script (celui de bebarth, adapté) en script de calcul sur mesure dans le champ caution_tables :

    Code:
    var i=this.getField(“tables”).currentValueIndices;
    this.event.value=this.getField(“tables”).getItemAt(i,false);

    Mais ça donne le nombre d’éléments choisis, pas le montant de la caution…

    #62166
    Sonya
    Membre

    :Smiley01: :Smiley01: :Smiley01:merci beaucoup cela fonctionne top !

    #62167
    Sonya
    Membre

    Re

    Je rencontre 2 nouveaux soucis :

    1- lorsque je veux faire la somme de mes grilles en bas, il y a comme un décalage dans le temps pour le calcul il faut que je modifie une sélection de liste déroulante et la mise à jour se fait mais pas toujours ? Je joins pdf et copie écran pour visuel

    2- mon total tables *25 + chaises * 10 + grilles * 15 ne s’effectue pas.

    Merci d’avance pour votre aide encore une fois

    #62168
    Merlin
    Maître des clés

    il y a comme un décalage dans le temps pour le calcul il faut que je modifie une sélection de liste déroulante et la mise à jour se fait mais pas toujours

    Un bug de ma version de Scribus m’empêche de voir le panneau Options des Propriétés des Listes déroulantes (il est vide…) mais il devrait y avoir une option du type “Valider la valeur sélectionnée immédiatement”, comme dans Acrobat.
    :priere:

    2- mon total tables *25 + chaises * 10 + grilles * 15 ne s’effectue pas.

    C’est normal, le script utilisé remplit une variable mais n’en fait rien d’autre. D’autre part on ne peut pas se contenter d’utiliser les noms de champs pour récupérer leur valeur.
    Remplace :
    var cautions = “caution_tables”*25+”caution_chaises”*10+”caution_grilles”*15;

    Par :
    var nTables = this.getField(“caution_tables”).value * 25;
    var nChaises = this.getField(“caution_chaises”).value * 10;
    var nGrilles = this.getField(“caution_grilles”).value * 15;
    event.target.value = nTables + nChaises + nGrilles;

    Attention aussi à l’ordre de calcul !
    Voir la 2e partie de cet article : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/lordre-dexecution-des-evenements-dans-les-champs-de-formulaire-pdf/

    #62169
    Sonya
    Membre

    Merci bcp Merlin quelles compétences dans ce domaine.
    Il va falloir que je travaille un peu, car très novice encore en java il faut l’avouer.

    Pour la validation de mon champs, j’ai cette fenêtre (jointe en fichier) mais cela signifie qu’il faut que je mette un peu de java ou autre fenêtre que celle-ci ?

    Merci

    #62170
    Merlin
    Maître des clés

    il faut que je mette un peu de java

    :tutut:  ==> http://abracadabrapdf.net/forum/index.php/topic,2160.msg10980.html#msg10980

    Peux tu poster une capture de la même fenêtre mais avec le panneau “Options” affiché ?

    #62171
    Sonya
    Membre

    Voici

    #62172
    Merlin
    Maître des clés

    Le panneau Options stp (celui que je ne peux pas voir dans mon Scribus).
    :Smiley01:

    #62173
    Sonya
    Membre

    Désolée voici

    #62174
    Merlin
    Maître des clés

    Ben… J’ai la même… Remplie de vide…  :Euuuh:  :doute:
    Comment fais tu pour remplir les valeurs de la liste déroulante avec une fenêtre vide ???

    À comparer avec la même fenêtre dans Acrobat.

    #62175
    Sonya
    Membre

    Voilà ma procédure :

    #62176
    Merlin
    Maître des clés

    Je viens d’apprendre quelque chose sur Scribus ! Merci parce-que j’aurais pu chercher longtemps…  :geek:

    Puisque l’option “Valider la valeur sélectionnée immédiatement” n’est pas disponible il faut utiliser la vieille ruse incontournable du temps d’Acrobat 5 et versions antérieures (qui n’offraient pas non plus cette option).

    1. Il faut créer un tout petit champ de type texte dans un coin du document, appelons le “ruse”, et le rendre invisible.

    2. Dans toutes les listes déroulantes il faut placer ce script en action “souris relevée” :

    Code:
    this.getField(“ruse”).setFocus();

    Ce qui aura pour effet de tenter d’activer le champ “ruse” après chaque clic sur une liste. Ça ne sera évidemment pas du tout visuel ni très utile car il est invisible, mais on s’en fiche…
    Parce-que ça a de toute façon pour conséquence de désactiver la liste cliquée et de forcer la validation immédiate de la valeur sélectionnée par l’utilisateur.
    Et c’est justement ce qu’on veux.

    :Smiley15:

    #62177
    Sonya
    Membre

    Tant mieux si j’ai pu vous apprendre quelque chose je suis contente.
    Bon j’ai mis copie écran j’ai essayé les options bouton souris relâchée puis la 2 et 3 et jusqu’à sortie souris mais cela ne fonctionne pas correctement.
    Dois-je poursuivre avec les 2 dernières.
    Je mets l’exemple en pdf avec option  sortie souris

    Merci

    #62178
    Merlin
    Maître des clés

    Encore une fois j’aurais dû tester avant… La mémoire est faible.  :oh:

    Tu as mis le script en action “souris sortie” au lieu de “souris relevée”, mais en fait dans les deux cas ça empêche le menu déroulant de fonctionner.

    Du coup tout ce que je peux te proposer c’est de finaliser ton formulaire avec Acrobat, juste pour cocher l’option “Valider la valeur sélectionnée immédiatement”.
    :Smiley11:

    #62179
    Sonya
    Membre

    Bonjour,

    Le problème c’est que je n’ai pas acrobat pro juste acrobat reader.
    Bon je vais réfléchir. Peut être que je peux trouver une idée pour contourner ce problème.

    Merci

    #62180
    Sonya
    Membre

    :mur: dur dur je ne trouve pas comment faire !

    #62181
    Merlin
    Maître des clés

    Au moment de finaliser le formulaire tu pourras toujours installer la version d’essai d’Acrobat Pro (7 jours).
    :Smiley03:

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