Donnez vie à vos documents numériques !
 

Création liste déroulante sur valeur d’un champ numérique

abracadabraPDF Forums PDF – Général Création liste déroulante sur valeur d’un champ numérique

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46491
    Issam
    Membre

    Bonjour à tous,

    Je souhaiterais créer une liste déroulante dynamique en fonction d’un champ numérique.

    Exemple :
    Si champ numérique = 10
    Éléments possibles dans la liste déroulante : Texte 1 à Texte 10

    Si champ numérique = 30
    Éléments possibles dans la liste déroulante : Texte 1 à Texte 30

    Merci de votre aide.
    Issam

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

    Bonjour

    Que devrait-il se passer si le champ n’est pas égal à 10 ni à 30 ?

    #68583
    Issam
    Membre

    Bonjour Merlin,

    La liste déroulante doit être obligatoire comprise entre les valeurs 1 et X, X étant défini par la valeur du champs numérique.

    Donc si on souhaite rentrer une valeur différente, ce n’est pas possible.

    Petite précision peut être, le “texte” est toujours le même, seul la valeur numérique change, et cette liste est présente dans un grand nombre de champs sur mon document basé toujours sur le même champs numérique de base.

    #68584
    Merlin
    Maître des clés

    cette liste est présente dans un grand nombre de champs sur mon document basé toujours sur le même champs numérique de base.

    Après le choix utilisateur, est-ce que cette liste doit avoir partout la même valeur ou bien le choix peut il être différent sur chaque page ?
    Il faudrait que tu partages ton fichier, ou un exemple.
    https://abracadabrapdf.net/forum/index.php/topic,2974.0.html

    #68585
    Issam
    Membre

    Bonjour Merlin,

    La liste doit être partout la même, par contre les valeurs sélectionner peuvent être différente.

    Je te partage un fichier avec un exemple attendu. Je suis parti dans l’idée d’une liste déroulante, ce n’est peut etre pas la bonne solution.

    Est ce qu’un champs texte avec une valeur MAX égale a la valeur du champ principale + un script de format personnalisé ne serait pas plus simple ?

    Merci de ton aide.

    #68586
    bebarth
    Maître des clés

    Je te partage un fichier avec un exemple attendu. Je suis parti dans l’idée d’une liste déroulante, ce n’est peut etre pas la bonne solution.

    Si le résultat attendu est une page blanche, ça ne doit pas être très compliqué !!!  :joker: :geek:

    @+
    :bonjour:

    #68587
    Merlin
    Maître des clés

    Oui, mais c’est une page blanche créée avec les abracadabraTools !
    :extra:

    Issam : je ne sais pas quelle est la valeur maximale attendue mais un menu déroulant devient pénible à utiliser à partir d’une vingtaine d’items.
    Je n’imagine pas un menu déroulant avec 50 ou 150 items à choisir, auquel cas la solution du champ texte avec une valeur maximale serait certainement plus user-friendly.

    Il faut aussi prendre en compte le temps d’exécution, j’ai livré récemment à une compagnie d’assurance des formulaires dans lesquels 14 listes déroulantes sont réinitialisées (suppression et remplacement de tous les items) lors du clic sur une case à cocher : avec un PC moderne (i7) bien gonflé il y a toujours quelques secondes de latences.
    Ce qui ne se produirait pas avec des champs texte car dans ce cas il faudrait tout au plus 2 millisecondes pour changer la valeur d’une variable.
    Le script serait également beaucoup plus simple et plus “léger”.

    #68588
    Issam
    Membre

    Si le résultat attendu est une page blanche, ça ne doit pas être très compliqué !!!  :joker: :geek:

    @+
    :bonjour:

    Forcément si vous manquez  d’imagination aussi  :joker: :jerisjaune:

    Oui, mais c’est une page blanche créée avec les abracadabraTools ! :extra: Issam : je ne sais pas quelle est la valeur maximale attendue mais un menu déroulant devient pénible à utiliser à partir d’une vingtaine d’items.Je n’imagine pas un menu déroulant avec 50 ou 150 items à choisir, auquel cas la solution du champ texte avec une valeur maximale serait certainement plus user-friendly.Il faut aussi prendre en compte le temps d’exécution, j’ai livré récemment à une compagnie d’assurance des formulaires dans lesquels 14 listes déroulantes sont réinitialisées (suppression et remplacement de tous les items) lors du clic sur une case à cocher : avec un PC moderne (i7) bien gonflé il y a toujours quelques secondes de latences.Ce qui ne se produirait pas avec des champs texte car dans ce cas il faudrait tout au plus 2 millisecondes pour changer la valeur d’une variable.Le script serait également beaucoup plus simple et plus “léger”.

    Tu as très certainement raison Merlin. Surtout que dans ce même document j’ai déjà deux liste déroulante de plusieurs niveau (Merci Bebarth) ainsi que des modèles de page etc etc.

    Du coup si tu pense que le champs texte est plus adapté je suis preneur, j’ai remis le fichier PJ, dans l’idée ce serait de remplir les champs “Caméras associées”.

    Merci beaucoup pour votre aide.
    :bonjour:

    #68589
    bebarth
    Maître des clés

    bonjour,
    Si en script de champ activé tu écris :

    Code:
    event.target.clearItems();
    for (var i=1; i<=this.getField("Nb de caméra").value; i++) event.target.insertItemAt("Cam "+i,"",-1);

    l’action ne sera exécutée que pour ce champ activé !
    A placer sur chaque champ évidemment.
    @+
    :bonjour:

    #68590
    Issam
    Membre

    Bonjour Bebarth,

    ça ne fonctionne malheureusement pas et j’ai ce message dans les logs

    Code:
    GeneralError: L’opération a échoué.
    Field.clearItems:1:Field Cam:Focus

    EDIT :
    J’ai dis une bêtise, ça fonctionne bien sur une liste déroulante – J’étais resté sur l’idée de Merlin donc j’ai essayer sur un champ texte.
    Toute mes excuses et merci

    #68591
    Issam
    Membre

    Bonjour,
    Finalement Merlin a raison, une liste avec 30 items c’est l’horreur et comme je peux en avoir plus de 100 dans certains cas…
    Je laisse donc tomber la liste déroulante pour me recentrer sur un champ texte.
    Du coup comment on ajoute sur un champ un préfixe, en l’occurrence “CAM-” pour que l’utilisateur ait juste à saisir un nombre ?

    Merci encore pour votre aide et merci Bebarth pour ton bout de code, je suis sur qu’il va me servir quelque part ;)

    #68592
    Merlin
    Maître des clés

    Il faut ajouter ce script en script de format personnalisé dans le champ texte :

    event.value = “CAM-” + event.value;

    #68593
    Issam
    Membre

    Bonjour MERLIN,

    C’est simple efficace et ça suffira largement.

    Encore merci.

    Dernière question – Il faut clôturer les sujets ou les laisser ouvert ?

    #68594
    Merlin
    Maître des clés

    Un sujet n’est jamais clos, on a vu des questions supplémentaires intervenir plus de 10 ans après l’ouverture d’un sujet.
    :Smiley01:

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