Zugriff auf disabled-Attribut für PrimeFaces Kalender mit JavaScript
-
25-09-2019 - |
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.
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>