abracadabraPDF › Forums › PDF – Général › Champs visibles conditionnels
- Ce sujet est vide.
- CréateurSujet
- 30 juin 2021 à 01:23 #46628
jctremblay
ParticipantBonjour,
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.
- CréateurSujet
- AuteurRéponses
- 30 juin 2021 à 05:10 #69397
michel c.
ParticipantJe 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.Code: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.
30 juin 2021 à 08:50 #69398bebarth
Maître des clésbonjour,
Plutôt que de répéter toutes ces conditions, je pense qu’il vaut mieux écrire en script de calcul du champ A :Code: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:30 juin 2021 à 08:59 #69399Merlin
Maître des clésBonjour
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).30 juin 2021 à 09:52 #69400bebarth
Maître des clésSinon, il faut l’adapter en script de validation pour les champs B et C. Ici pour le champ B :
Code: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:30 juin 2021 à 14:41 #69401jctremblay
ParticipantBonjour, 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é.30 juin 2021 à 17:22 #69402bebarth
Maître des clésbonjour,
Juste pour dire quelque chose, voici une version où tu n’as pas besoin de cases à cocher invisibles ! :geek:
@+
:bonjour:30 juin 2021 à 17:30 #69403jctremblay
ParticipantMerci bebarth ! C’est de toute beauté. :jerisjaune:
30 juin 2021 à 20:21 #69404michel c.
ParticipantMerci bebarth ! C’est de toute beauté. :jerisjaune:
Effectivement….
Sinon 2 questions : dans cette ligne :
Code:this.getField(theField).display=this.getField(theField).display==display.visible?display.hidden:display.visible;à quoi sert le « ? »
Et dans cette ligne :
Code: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
30 juin 2021 à 21:25 #69405bebarth
Maître des clésbonsoir,
Code: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 :
Code: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 :
Code: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: - AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.