Je suis débutante avec JSF,je veux savoir comment ajouter un champ de texte (ch1)désactivé et aprés la saisie d'un autre champ(ch2), ,ch1 sera activé ou non selon la valeur saisie dans ch2.
Est ce que vous pouvez m'aider?
Version imprimable
Je suis débutante avec JSF,je veux savoir comment ajouter un champ de texte (ch1)désactivé et aprés la saisie d'un autre champ(ch2), ,ch1 sera activé ou non selon la valeur saisie dans ch2.
Est ce que vous pouvez m'aider?
tu peux soit implémenter Ajax4JSF (a4j) ou en utilisant une UEL et un peu de javascript
Merci,mais est ce que vous pouvez me donner le syntax preci ou bien un lien qui peut m'aider?
Pour ce qui est d'ajax4JSF voici un lien intéressant ici
Une façon de faire en Javascript :
Attention, l'ID d'un champ inputText est préfixée par l'ID du formulaire qui le contient. D'où le getElementById("myForm:ch1")...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <script type="text/javascript"> function testeValeur(valeur) { if (valeur == "valeur voulue") { // La valeur de ch2 est celle attendue, on désactive donc ch1. document.getElementById("myForm:ch1").disabled = false; } else { // La valeur de ch2 n'est pas celle attendue, on désactive donc ch1. document.getElementById("myForm:ch1").disabled = true; } } // La même fonction, mais avec une écriture simplifiée. function testeValeurSimplifiee(valeur) { document.getElementById("myForm:ch1").disabled = (valeur == "valeur voulue"); } </script> <h:form id="myForm"> <h:inputText id="ch1" disabled="true" .../> <h:inputText id="ch2" onchange="testeValeur(this.value);" .../> ...
Merci beaucoup romaintaz,j'ai exécuté ce code avec un champ de texte mais pour SelectOneMenu ça ne marche pas:cry:
Voici mon code:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <script type="text/javascript"> function testeValeur(valeur) { if (valeur == "MPLS") { document.getElementById("myForm:vrf").disabled = false; } else { document.getElementById("myForm:vrf").disabled = true; } } </script> <h:form id="myForm"> <h:selectOneMenu id="som3" value="TableBean.perInfoAll" title="select any one in this menu" onchange="testeValeur(this.itemLabel);"> <f:selectItem id="e1" itemLabel="Principal" itemValue="11"/> <f:selectItem id="e2" itemLabel="Peripherique" itemValue="22"/> <f:selectItem id="e3" itemLabel="MPLS" itemValue="33" /> </h:selectOneMenu> <h:outputText value="VRF : disabled="true" /> <h:inputText id="vrf" disabled="true"></h:inputText>
Ah ouais mais non ! On ne récupère pas la valeur d'un inputText de la même façon que celle d'un select !
Tout d'abord, modifie l'appel à la fonction testeValeur pour donner en paramètre l'objet et non plus sa valeur :
ensuite, dans le Javascript :Code:<h:selectOneMenu id="xxx" onchange="testeValeur(this);" ...>
Code:
1
2
3
4
5
6 function testeValeur(field) { if (field.options[field.selectedIndex].value == "xxx") { ... } }
Merci,romaintaz,mais j'ai une autre question : Output Text ne peut pas etre disabled?
Est ce que de la meme façon on ajoute dans javascript :Code:<h:outputText id="chVRF" value="VRF :" disabled="true" />
Merci d'avanceCode:document.getElementById("myForm:chVRF").disabled = false;
Non, et pour cause : un outputText, ce n'est que du texte ! Cela n'a donc pas de sens qu'il soit activé ou désactivé...
Ok,merci,romaintaz,ça marche pour SelectONeMenu et donc on n'a pas besoin donc de désactiver Output text.
sinon tu peux mettre le tout dans un h:panelGroup et utiliser le rendered ou en javascript:
et pour le cacherCode:document.getElementById("myForm:groupSelect").style.display = block;
Code:document.getElementById("myForm:chVRF").style.display = none;