Question

J'ai une forme où certains champs doit être désactivé jusqu'à ce qu'une case à cocher est cliqué. Pour les éléments JSF sont tous très bien travailler. Le problème est avec les éléments primeface.

Pour un élément JSF comme une liste déroulante je le fais comme ceci:

<h:selectOneMenu value="countryValue" disabled="true" id="countryId">
    <f:selectItems value="countries" />
</h:selectOneMenu>

Et pour les éléments Primefaces, une calandre, comme ceci:

<p:calendar disabled="true" id="datePicker" value="dateValue" 
         pattern="yyyy-MM-dd" startWeekday="1"    
            timeZone="GMT">  
</p:calendar>

Le code JavaScript que je l'ai utilisé pour activer ces éléments sur un événement est simple:

function enableLocationUpdateFilter()
{
    document.getElementById('form:datePicker').disabled = false;
}

Le jQuery appelant le onchange événement:

 jQuery('.countryCheckBoxId').change(function()
 {
    enableCountryFilter();
 });

En étudiant l'élément Primefaces dans Firebug Je peux voir que l'id « Datepicker » agit uniquement comme id « span » et l'ID réel pour le inputfield HTML est « datePicker_input ». Ainsi, au lieu en utilisant « Datepicker » comme une carte d'identité dans le javascript j'essayé d'utiliser « datePicker_input ». Cela permet au champ, mais l'événement jQuery aborder le calendrier réel ne fonctionne pas.

Il semble aussi que le calendrier est appelé par un jquery événement. Dans ce jquery-événement, vous pouvez voir que la valeur par défaut désactivée est définie sur true. Et je pense que c'est le problème, je ne peux pas mettre cette partie à false.

Était-ce utile?

La solution 2

Étant donné que le calendrier est appelé lorsque vous appuyez sur le champ de texte j'ai essayé ce qui suit:

-Définir le calendrier variable de HANDICAPÉ faux.
-Définir le champ de texte d'entrée attribut disabled pour le calendrier à true.
changement -Sur, définissez le champ texte attribut disabled false.

De cette façon, l'attribut désactivé pour le calendrier est toujours à faux (ce qui signifie qu'il est jamais désactivé) et je ne définir le champ de texte désactivé dans le code sur le rendu javaScript. De cette façon, vous ne pouvez pas déclencher le calendrier et la désactivation va seulement pour le champ de texte et sur le changement que je permet à nouveau le champ de texte.

Autres conseils

Le mieux que je peux penser est de faire appel Ajax sur le serveur, et rerender le calendrier. Pourriez-vous nous dire ce qui déclenche cet événement jQuery-onchange?

Et je suppose que vous utilisez JSF 2.0, droit?

Mise à jour:

Vous voulez activer p:calendar lorsque checkBox est cliqué. Quelque chose de semblable à cela devrait fonctionner:

<h:selectBooleanCheckbox id="countryCheckBoxId" value="#{bean.countryBoolean}">
   <f:ajax render="datePicker"/>
</h:selectBooleanCheckbox>

<p:calendar disabled="#{!bean.countryBoolean}" id="datePicker" value="dateValue" 
        pattern="yyyy-MM-dd" startWeekday="1" timeZone="GMT">     
</p:calendar>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top