Création liste déroulante sur valeur d'un champ numérique  (Lu 229 fois) Partager ce sujet Imprimer

1 B


Issam  05 janvier 2021 : 09:31

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

IP archivée


Merlin  05 janvier 2021 : 10:44

Bonjour

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

IP archivée


Issam  05 janvier 2021 : 11:11

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.






IP archivée


Merlin  05 janvier 2021 : 15:30

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

IP archivée


Issam  05 janvier 2021 : 18:11

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.


IP archivée


bebarth  05 janvier 2021 : 18:42

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:

IP archivée


Merlin  05 janvier 2021 : 19:26

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".

IP archivée


Issam  05 janvier 2021 : 21:31

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:




IP archivée


bebarth  06 janvier 2021 : 16:01

bonjour,
Si en script de champ activé tu écris :
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:

IP archivée


Issam  06 janvier 2021 : 16:27

Bonjour Bebarth,


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


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




IP archivée


Issam  07 janvier 2021 : 08:47

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 ;)






IP archivée


Merlin  07 janvier 2021 : 10:09

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

event.value = "CAM-" + event.value;

IP archivée


Issam  07 janvier 2021 : 12:30

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 ?


IP archivée


Merlin  07 janvier 2021 : 13:05

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:

IP archivée