Доступ к атрибуту отключенного отключения для Calendar Primefaces с JavaScript
-
25-09-2019 - |
Вопрос
У меня есть форма, где некоторые поля должны быть отключены, пока нажат флажок. Для JSF-элементов все работает нормально. Проблема с элементами основных поверхности.
Для JSF-элемента, как выпадающий список, я делаю это так:
<h:selectOneMenu value="countryValue" disabled="true" id="countryId">
<f:selectItems value="countries" />
</h:selectOneMenu>
А для главных элементов-элементов, каландарь, как это:
<p:calendar disabled="true" id="datePicker" value="dateValue"
pattern="yyyy-MM-dd" startWeekday="1"
timeZone="GMT">
</p:calendar>
JavaScript, который я использовал для включения этих элементов на событии просто, как:
function enableLocationUpdateFilter()
{
document.getElementById('form:datePicker').disabled = false;
}
JQuery вызывает Onchange-Event:
jQuery('.countryCheckBoxId').change(function()
{
enableCountryFilter();
});
Исследуя элемент Primefaces в Firebug, я вижу, что идентификатор «DatePicker» действует только как идентификатор «SPAN», а фактический идентификатор для HTML INPUPFFIFFALD - «DATYPIKE_INPUT». Таким образом, вместо этого используя «DatePicker» в качестве идентификатора в JavaScript, я пытался использовать «DatePicker_Input». Это позволяет полям, но мероприятие jQuery, поднимающее фактическое календарь, не работает.
Похоже, что календарь называется через мероприятие jQuery. В этом мероприятии jQuery вы можете увидеть, что отключение по умолчанию установлено значение TRUE. И я думаю, что это проблема, я не могу установить эту часть на ложь.
Решение 2
Поскольку календарь называется при нажатии текстового поля, я пробовал следующее:
- Установите Calender отключить переменную в false.
-Отайте атрибут отключенного поля входного текста для календаря к true.
-ON изменить, установите атрибут отключенного поля текстового поля в false.
Таким образом, атрибут отключенного отключения для календаря всегда устанавливается на false (что означает, что он никогда не отключен), и я устанавливаю только текстовое поле для отключения в код JavaScript на рендеринге. Таким образом, вы не можете вызвать календарь, а отключение идет только для текстового поля, а также на изменение я снова включив текстовое поле.
Другие советы
Лучшее, о чем я могу придумать, это сделать Ajax Call на сервере и рерандер календаря. Не могли бы вы сказать нам, что запускает это событие jQuery-Onchange?
И я предполагаю, что вы используете JSF 2.0, верно?
ОБНОВИТЬ:
Так что вы хотите включить p:calendar
Когда флажок нажат. Что-то похожее на это должно работать:
<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>