Donnez vie à vos documents numériques !
 

Question de JavaScript

abracadabraPDF Forums PDF – Général Question de JavaScript

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45137
    Pazo
    Membre

    Bonjour,

    j’ai fais quelques recherches sur le forum mais sans trouver mon bonheur. Je travaille sur Acrobat X Professional et je voudrais savoir si il est possible de faire apparaitre une liste déroulante en fonction d’un mot contenu dans une autre liste déroulante. Je schématise :

    J’ai différent modèles de produits : Champs : type_produit
    armoire 1
    armoire 14
    armoire compact 1
    armoire compact 14
    lavabo 1
    lavabo 12
    lavabo 33

    Les modèles compacts ne sont disponibles que en noir tout comme les lavabos champs : couleur_unique
    Par contre les armoires normales sont disponibles en plusieurs couleurs. Champs : couleur_toutes

    Mon idée est donc : en fonction du contenu de type_produit faire apparaitre telle ou telle liste déroulante

    J’ai trouvé ce code en me promenant sur le forum mais soit je ne sais pas le faire fonctionner, soit cela ne fonctionne pas pour ce que je voudrais faire.

    Code:
    if(this.getfield(“Type_produit”).contain==”compact”)
    {this.getfield(“couleur_toutes”).hidden=true;}
    else
    {this.getfield(“couleur_unique”).hidden=false;}

    J’ai collé ceci dans les 3 champs de calcul personnalisés des champs

    Je dois avouer que j’ai toujours éviter de devoir mettre du code dans mes formulaires car je n’y comprend pas grand chose

    Si quelqu’un avait la gentillesse, patience et la connaissance de m’éclairer ce serait avec plaisir :-)

    Merci d’avance et bonne journée

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

    Bonjour et bienvenue.

    C’est une question qui revient souvent et qui a déjà été traitée sur ce forum.
    Il faut faire une recherche sur “mère fille” et sur “liste déroulante”.

    Par-contre cela requiert un minimum de connaissances en JavaScript…
    :Smiley15:

    #58823

    Bonjour,

    J’ai une solution car j’ai eu le problème il y a quelques mois et il y a bien fallu que je m’y attèle sérieusement.

    Le problème n’est pas simple mais il n’est pas compliqué non plus. Une listbox réagit assez curieusement après avoir cliqué dans celle-ci, en effet au premier clic, elle va donner une valeur qui est en fait la valeur que la liste avait lors d’un clic précédent !
    Par contre, il y a une valeur qui est lisible directement mais qui malheureusement n’est pas utilisable directement c’est event.changeEx (en Français dans le texte)
    Donc pour retrouver la valeur qui m’intéresse, je relit la listbox en comparant l’évènement avec les valeurs réelles et je trouve l’index qui m’intéresse.

    Pour afficher maintenant dans une deuxième listbox les valeurs voulues, je met tout cela dans une table, celle-ci est sauvée dans le code source du formulaire de manière a être chargé à l’ouverture du fichier.

    J’ai fait un petit exemple avec les données proposées.

    #58824
    Merlin
    Maître des clés

    Bonjour.

    Une listbox réagit assez curieusement après avoir cliqué dans celle-ci, en effet au premier clic, elle va donner une valeur qui est en fait la valeur que la liste avait lors d’un clic précédent !

    Assures toi de cocher l’option encadrée comme sur la capture jointe.
    Ca change tout…
    :Smiley03:

    #58825

    Bien joli cette option, mais mon programme fonctionne et je m’embête moins à essayer de savoir ce que le formulaire veut faire. Si à la console cela à l’air de fonctionner, par programme ça ne marche pas aussi bien !
    Comprenne qui pourra.

    #58826
    alex
    Participant

    Bonjour,
    Dans votre script qui me parait bon, il ne faut pas recourir à une variable globale (global.f), remplacez la par f.
    Il n’est sans doute pas utile de cocher la case de validation immédiate.
    Ci-joint ma version avec trace dans la console.

    #58827

    Merci pour votre réaction Alex,

    La variable global.f est là parce que dans mon programme j’ai besoin de cette valeur ailleurs, j’ai simplement recopié et simplifié le code que j’utilise.
    Pour ce qui est de l’option, je ne l’enclenche pas avec cette méthode, c’est en effet inutile.

    Vous avez mis le tout dans une fonction, je n’ai pas voulu le faire pour cet exemple car le demandeur, Pazo, n’avait pas l’air d’être à l’aise avec la programmation.
    Votre programme fonctionne aussi, il est écrit légèrement différemment. Je ne parle pas des contrôles par console que je fais aussi lors de la mise au point d’un nouveau code mais que j’efface après.

    J’aime bien votre remarque , “parait bon”, le script provient d’un formulaire qui tourne sur plusieurs listes Mère – Filles – Petite-filles  + un deuxième système de filtres sur 5 niveaux. La table de données contient 81 lignes à 7 colonnes. A la fin, le résultat me permet d’afficher une zone d’un plan dans un document qui en contient 23.
    J’ai un formulaire similaire pour un autre sujet qui trie une table de 3500 lignes sur 8 colonnes, filtrage des données sur 5 listes et 1 champ texte. La finalité est d’ouvrir un PDF ou d’avoir le nom d’un fichier de dessin avec son chemin sur le serveur. La table est gérée par une base de données Access qui génère un fichier de mise à jour du formulaire PDF. Les deux fonctionnent avec le Reader à condition de les libérer complètement.

    J’aime bien les critiques, surtout les constructives, ce qui est votre cas. Ne prenez donc pas ma réaction au premier degré. Je ne suis pas programmeur, je répond à mes clients avec des “tournevis” pour qu’ils puissent obtenir la réponse à leurs questions et cela de la manière la plus simple, la plus rapide et la plus sûre possible.

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