Champs visibles conditionnels  (Lu 340 fois) Partager ce sujet Imprimer

1 B


jctremblay  30 juin 2021 : 03:23

Bonjour,


Je trouve plusieurs exemples ou la visibilité d’un champ est controlé par des cases d’options. Je me demande si c’est aussi possible de contrôlé la visibilité d’un champ selon la visibilité de plusieurs autres. Ex: Le champs "A" est visible lorsque elle champs "B" et "C" le sont aussi.




IP archivée


michel c.  30 juin 2021 : 07:10

Je pense que oui, il suffit que les 2 conditions soient remplies. 
Si la variable b = 5 alors le champ Cb est visible.   
Si la variable c = 7 alors le champ Cc est visible. 
Si la variable b=5 et la variable c= 7 alors le champ Ca est visible. 


 var b = (this.getField("saisieB").value);
var c = (this.getField("saisieC").value);

if (b == 5 &&  c ==7) {
this.getField("Ca").display = display.visible;
this.getField("Cb").display = display.visisble;
this.getField("Cc").display = display.visible;
}

else if (b == 5 && c!=7) {
this.getField("Ca").display = display.hidden;
this.getField("Cb").display = display.visible;
this.getField("Cc").display = display.hidden;
}

else if (c == 7 && b!=5) {
this.getField("Ca").display = display.hidden;
this.getField("Cb").display = display.hidden;
this.getField("Cc").display = display.visible;
}


else {
this.getField("Ca").display = display.hidden;
this.getField("Cb").display = display.hidden;
this.getField("Cc").display = display.hidden;
}
   

ça devrait marcher je pense.

IP archivée


bebarth  30 juin 2021 : 10:50

bonjour,
Plutôt que de répéter toutes ces conditions, je pense qu'il vaut mieux écrire en script de calcul du champ A :
if (this.getField("champB").display==display.visible && this.getField("champC").display==display.visible) event.target.display=display.visible;
else event.target.display=display.hidden;
@+
 :bonjour:

IP archivée


Merlin  30 juin 2021 : 10:59

Bonjour

Je crois savoir que jctremblay fait de gros formulaires alors méfiance avec les scripts de calculs qui sont pénalisant en terme de performance quand il y en a beaucoup.
(Tous les scripts de calcul sont exécutés à chaque clic de l'utilisateur).

IP archivée


bebarth  30 juin 2021 : 11:52

Sinon, il faut l'adapter en script de validation pour les champs B et C. Ici pour le champ B :
if (event.target.display==display.visible && this.getField("champC").display==display.visible) this.getField("champA").display=display.visible;
else this.getField("champA").display=display.hidden;
@+
 :bonjour:

IP archivée


jctremblay  30 juin 2021 : 16:41

Bonjour, et merci pour toutes les pistes.

Puisque les champs que j’utilisais étaient des boutons, il m’était impossible d’utiliser des scripts de calculs ou de validation. J’ai donc utilisé un JavaScript de document que j’appelle au besoin.

Ceci n’était qu’un exercice pour saisir comment faire basculer la visibilité de boutons par d’autres boutons, puis d’afficher un bouton si les 3 premiers étaient visibles.

Je joins mon PDF pour votre curiosité.

IP archivée


bebarth  30 juin 2021 : 19:22

bonjour,
Juste pour dire quelque chose, voici une version où tu n'as pas besoin de cases à cocher invisibles !  :geek:
@+
 :bonjour:

IP archivée


jctremblay  30 juin 2021 : 19:30

Merci bebarth ! C'est de toute beauté.  :jerisjaune:

IP archivée


michel c.  30 juin 2021 : 22:21

Merci bebarth ! C'est de toute beauté.  :jerisjaune:
Effectivement....

Sinon 2 questions : dans cette ligne :

this.getField(theField).display=this.getField(theField).display==display.visible?display.hidden:display.visible;à quoi sert le "?"


Et dans cette ligne :



checkABC(event.target.name.substr(0,1));
substr(0,1)) veut dire que l'on extrait 1 caractère à partir de la position 0 du nom du bouton cible ?


Merci

IP archivée


bebarth  30 juin 2021 : 23:25

bonsoir,
this.getField(theField).display=this.getField(theField).display==display.visible?display.hidden:display.visible;à quoi sert le "?"
C'est une autre façon décrire :
if (this.getField(theField).display==display.visible) this.getField(theField).display=display.hidden;
else this.getField(theField).display=display.visible;
? signifie "si oui" et
: signifie "si non" (ou "sinon")

Et dans cette ligne :
checkABC(event.target.name.substr(0,1));substr(0,1)) veut dire que l'on extrait 1 caractère à partir de la position 0 du nom du bouton cible ?
Exactement ! Le bouton cible étant également le bouton source.

@+
 :bonjour:

IP archivée