У меня есть форма, в которой некоторые поля необходимо отключить, пока не будет установлен флажок.Для JSF-элементов все работает нормально.Проблема с простыми элементами.
Для JSF-элемента, такого как выпадающий список, я делаю это так:
<h:selectOneMenu value="countryValue" disabled="true" id="countryId">
<f:selectItems value="countries" />
</h:selectOneMenu>
А для Primefaces-элементов такой календарь:
<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:
jQuery('.countryCheckBoxId').change(function()
{
enableCountryFilter();
});
Исследуя элемент Primefaces в firebug, я вижу, что id «datePicker» действует только как «span», а фактический идентификатор для поля ввода HTML - «datePicker_input».Таким образом, вместо использования «datePicker» в качестве идентификатора в JavaScript, я попытался использовать «datePicker_input».Это активирует поле, но событие jQuery, вызывающее фактический календарь, не работает.
Также кажется, что календарь вызывается через событие jquery.В этом jquery-событии вы могли видеть, что по умолчанию отключено установлено значение true.И я думаю, что это проблема, я не могу установить эту часть на false.