Salut,
J'ai un selectOneListbox avec 2 valeurs, 0 et 1, et un inputText.
Comment est-ce-qu'on peut diriger que l'inputText devient saissisable seulement si la valeur choisie dans le selectOneListbox est 0?
Merci pour votre aide,
Cristine
Version imprimable
Salut,
J'ai un selectOneListbox avec 2 valeurs, 0 et 1, et un inputText.
Comment est-ce-qu'on peut diriger que l'inputText devient saissisable seulement si la valeur choisie dans le selectOneListbox est 0?
Merci pour votre aide,
Cristine
Bonjour,
Voila ce que je ferais (je suis pas un pro)
JSP
Code:
1
2
3
4
5 <h:selectOneMenu id="menu1" value="#{managedBean.selectedValue}"> <t:selectItems value="#{refundController.Values}" var="value" itemLabel="#{value}" itemValue="#{value}" /> </h:selectOneMenu>
ManagedBeanCode:
1
2<h:inputText disabled="#{managedBean.selectedValue}">
Enfin en gros :)Code:
1
2private Boolean selectedValue;
Le problème de cette solution, c'est qu'elle exige un aller-retour serveur (en Ajax ou non).
Personnellement, je me ferais plutôt ça en Javascript:
Code Javascript (c'est de l'approximatif, donc à corriger éventuellement) :
En JSP/JSF:Code:
1
2
3
4
5
6
7
8
9
10 function pouet(field) { var myInput = document.getElementById("myForm:myInput"); var selected = field.selectedIndex; if (selected != -1) { myInput.disabled = (selected.options[selected].value != '1'); } else { myInput.disabled = true; } }
Beaucoup plus simple...Code:
1
2
3
4
5
6
7
8
9 <h:form id="myForm"> ... <h:selectOneMenu id="myList" onchange="pouet(this);" ...> ... </h:selectOneMenu> ... <h:inputText id="myInput" .../> ...
Petite digression sur le sujet, mais est-ce que vous êtes confronté aux problèmes d'accessibilité?
Nous on nous demande un minimum d'accessibilité, donc javascript (et AJAX) a éviter.
Je ne comprend pas bien ton propos...
Qu'entends tu par "problème d'accessibilité" ?
Il est malheureusement des choses qu'il est difficile, voire parfois impossible à faire en se passant de Javascript (et / ou Ajax).
Dans le cas présent, je ne vois pas trop comment, simplement et sans lourdeur pour l'utilisateur, on peut procéder...
Une solution simple, mais lourde, serait de forcer l'utilisateur à envoyer son formulaire au serveur, qui alors, retournerait la nouvelle page, avec le input text modifiable ou non selon le choix de l'utilisateur dans la combobox... Mais c'est vraiment lourd je trouve.
Je parle des problèmes d'accessibilité au Web pour les personnes handicapées. Si je ne me trompe pas, les sites doivent pouvoir être utilisables avec le javascript désactivé. Mais bon c'est un autre sujet... Et effectivement, ta solution et plus légère :)
Je réfléchissais à ce que tu as écrit. Sousentends-tu par accessibilité le fait de toucher un maximum de personnes, donc de navigateurs particuliers, et donc, de toucher également les personnes ayant désactivé le Javascript sur leur navigateur ?
Si c'est bien cela, alors je comprends mieux ton interrogation. Cependant, je me demande si c'est raisonnable d'alourdir ton site, ou de l'alléger en fonctionnalités, tout cela pour prendre en compte un faible pourcentage des navigateurs ?
Edit : D'après ta dernière réponse, c'est effectivement bien ce dont tu parlais ;)
Il est vrai que l'on ne prend que trop rarement en considération l'utilisation de son site pour les personnes handicapées...
Mon expérience en la matière est très limitée (j'avais un admin réseau à ma fac qui était non voyant, et heureusement, il arrivait à se débrouiller - fort bien d'ailleurs - grâce à un Linux, tout en mode texte et un clavier avec une lecture en braille). Cependant, je ne vois pas vraiment de contre-indication entre l'accessibilité et le Javascript, si ? Moi j'aurais plutôt vu des efforts à faire sur l'aspect visuel du site, la possibilité de le rendre visible avec des fontes très importantes, etc...
Maintenant, c'est clair que ça dépend aussi pas mal de l'utilisation du JS que l'on en fait.
Mais tout ceci est effectivement un autre débat !
Je boss pour l'éducation nationale :) et on nous demande de rendre certains de nos sites accessibles...
Voila un lien
http://fr.wikipedia.org/wiki/Accessibilit%C3%A9_du_Web
Une des règles est :
réaliser un site web utilisable sans images ni style CSS ni JavaScript.
Je clôture la dessus :)
P.S : si tu as 5min jettes un oeil a mon autre problème :) avec le selectBooleanCheckbox
Bonne journée
Merci pour ces précisions robbiano78.
CristinaB, on attend de tes nouvelles pour savoir si le sujet est résolu :P
Salut,
Merci a tous pour vos idees.
J'ai commence avec la propositiion de robbiano78, car c'etait plus proche de mon projet et j'ai finit par introduire une variable boolean isSelected (avec les getter et setter) dans mon Bean et une methode valueChanged (applellee par l'evenement du changement de la valeur), qui verifie la valeur selectee dans le selectOneListbox et ensuite met le isSelected a true ou false, selon le cas.
Ensuite, pour l'inputText j'ai mis:Code:<h:selectOneListbox id="id" valueChangeListener="#{myBean.valueChanged}" onChange="submit();" immediate="true" value="#{myBean.value}">
disabled="#{myBean.isSelected}"
Le code de la methode valueChanged:
voila,Code:
1
2
3
4
5
6
7
8
9 public void valueChanged(ValueChangeEvent event) { HtmlSelectOneListbox element = (HtmlSelectOneListbox) event.getComponent(); String label = (String) element.getValue(); if ("valeur_pour_disabled".equals(label)) { setIsSelected(true); } else { setIsSelected(false); } }
a propos, pour un changement de cas, si on veut mettre un selectOneListbox disabled selon la valeur introduite dans l'inputText, c'est facile a utiliser :
Merci beaucoup,Code:<a:support event="onkeyup" reRender="selectOneList,inputText"/>
Bonne chance.
Cristine.;)
Edit romaintaz: :tagcode: