Frage

Ich habe ein Formular, in dem einige Felder muss deaktiviert werden, bis ein Kontrollkästchen angeklickt wird. Für JSF-Elemente sind alle gut funktioniert. Das Problem ist mit den primeface Elementen.

Für eine JSF-Element wie ein Drop-Down-Liste Ich mache es wie folgt aus:

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

Und für Primefaces-Elemente, ein Kalander wie folgt aus:

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

Die JavaScript Ich habe verwendet, um diese Elemente auf einer Veranstaltung zu ermöglichen, ist einfach wie:

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

Die jQuery die onchange-Ereignis aufrufen:

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

Durch das Primefaces Element in Firebug untersuchen kann ich sehen, dass die id „Datepicker“ wirkt nur als „Spanne“ id und die tatsächliche ID für den HTML-Inputfield ist „datePicker_input“. Also, statt durch „Datepicker“ als ID in dem mit Hilfe von Javascript habe ich versucht, „datePicker_input“ verwenden. Dies ermöglicht es das Feld, aber das jQuery Ereignis den tatsächlichen Kalenders Erziehung funktioniert nicht.

Es scheint auch, dass der Kalander durch ein Jquery-Ereignis aufgerufen wird. In diesem jquery-Ereignisse konnte man sehen, dass die deaktiviert standardmäßig auf true gesetzt ist. Und ich denke, dass das Problem ist, kann ich nicht festgelegt, dass ein Teil auf false gesetzt.

War es hilfreich?

Lösung 2

Da der Kalender wird aufgerufen, wenn Sie drücken Sie die Textfeld Ich habe versucht, die folgenden:

-Set der Kalender deaktiviert Variable auf false gesetzt.
-Stellen Sie das Eingabetextfeld disabled-Attribut für den Kalender auf true.
-Auf ändern, setzen Sie das Textfeld deaktiviert Attribut auf false gesetzt.

Auf diese Weise wird das disabled-Attribut für den Kalender immer auf false gesetzt ist (was bedeutet, ist es nie deaktiviert) und ich nur das Textfeld auf Behinderte in JavaScript-Code auf Rendern. Auf diese Weise können Sie den Kalender nicht auslösen können und die Sperrung geht nur für das Textfeld und ändern wieder das Textfeld I ermöglicht wird.

Andere Tipps

Das Beste, was ich denken kann, ist Ajax-Aufruf auf dem Server zu machen, und den Kalender rerender. Können Sie uns sagen, was diese jQuery-onchange Ereignis auslöst?

Und ich nehme an, Sie sind mit JSF 2.0, nicht wahr?

UPDATE:

Sie wollen also p:calendar aktivieren, wenn checkBox geklickt wird. Etwas ähnliches wie dies funktionieren soll:

<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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top