Skip to main content
Version: Next

Masquer un champ en fonction de la valeur d'un autre

Voici la méthode pour masquer un champ en fonction de la valeur d'un autre :

Tout se passe dans le formulaire lui même

1. En mode source, donner un id unique à la cellule qui contient le champ à masquer :

<td id="champLecteursAutorises" colspan="3">
<apsfield:ApsFieldText id="apsLecteursAutorises" advancedmode="True" showlabel="True" fieldlabel="Lecteurs autoris&amp;#233;s" fieldname="LecteursAutorises" fieldid="547fa58e-433d-4a9c-915b-97e5f6c332fc" runat="server" helperposition="Left" textmode="MultiLine" rows="3">
</apsfield:ApsFieldText></td>

2. En bas du composant, écrire une section javascript avec :

  • une fonction qui contrôle la/les conditions de masquage/visualisation de la zone contenant le champ et qui positionne en fonction du résultat le style

display "none" : pour masquer display "table-cell" pour afficher une cellule (sur une balise <td>) display "table-row" pour afficher une ligne (sur une balise <tr>) display "table" pour afficher un tableau (sur une balise <table>)

Cette fonction peut ou non modifier le contenu du champ pour le rendre obligatoire par exemple

  • l'abonnement au onload de la page pour appeler la fonction
<script type="text/javascript">
function checkConfidentiel()
{
var elt = APSGetFieldValueByName("Confidentiel");
var recherche= document.getElementById('champLecteursAutorises');

if(elt != 'Oui')
{
recherche.style.display = "none";
APSSetFieldValueByName("champLecteursAutorises", "" );
}
else
{
recherche.style.display = "table-cell";
if(APSGetFieldValueByName("champLecteursAutorises") == "")
{
APSSetFieldValueByName("champLecteursAutorises", "" );
}
}
}
APSAttachEventToElement(window, "load", checkConfidentiel );
</script>

3.3 Sur le/les champ(s) déclencheur(s), dans la section javascript:oninit s'abonner à l'événement onchange pour appeller la fonction javascript :

APSAttachEventToElement( APSGetFieldByName("Confidentiel") , "change", checkConfidentiel );
NB

Dans le cas d'un champ de type radio-bouton, l'abonnement se fait en mode source sur l'événement onclick :

apsfield:ApsFieldTextRadio id="apsConfidentiel" onclick="checkConfidentiel();"