Доступ к отключенному атрибуту для календаря PrimeFaces с помощью JavaScript - PullRequest
3 голосов
/ 27 сентября 2010

У меня есть форма, в которой некоторые поля необходимо отключить, пока не будет установлен флажок.Для 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.

Ответы [ 2 ]

4 голосов
/ 27 сентября 2010

Лучшее, что я могу придумать, - это сделать вызов Ajax на сервере и повторно выполнить календарь.Не могли бы вы рассказать нам, что вызывает это событие jQuery-onchange?

И я предполагаю, что вы используете JSF 2.0, верно?

ОБНОВЛЕНИЕ:

Итак, вы хотите включить p:calendar при нажатии checkBox.Нечто подобное должно работать:

<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>
0 голосов
/ 02 мая 2012

Поскольку при вызове текстового поля вызывается календарь, я попытался сделать следующее:

- установить для отключенной переменной календаря значение false.
- установить для атрибута отключения входного текстового поля календаря значение true.
- При изменении установите для атрибута disabled текстового поля значение false.

Таким образом, атрибут disabled для Календаря всегда устанавливается в значение false (то есть он никогда не отключается), и я задаю только текстполе для отключения в коде javaScript при рендеринге.Таким образом, вы не можете запустить календарь, и отключение выполняется только для текстового поля, и при изменении я снова включил текстовое поле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...