Доступ к атрибуту отключенного отключения для Calendar Primefaces с JavaScript

StackOverflow https://stackoverflow.com/questions/3801738

  •  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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top