Проверить значение f: items на основе p: selectManyCheckbox с помощью javascript
Я хотел бы знать, как проверить значение f: items на основе p: selectManyCheckbox с помощью javascript.
Что я сделал
Xhtml
<p:selectBooleanCheckbox itemLabel="Select All" onchange="changeSelectAllStatus(this);"
value="#{myBean.selectAllStatus}"
id="selectAllStatus" style="margin-left:4px;" >
</p:selectBooleanCheckbox>
<p:selectManyCheckbox onchange="changeServiceStatus(this);"
styleClass="servicestatusstyle"
value="#{myBean.serviceStatusFilterList}"
layout="pageDirection" id="empListSub">
<f:param name="tabValue" value="1" />
<f:selectItems value="#{myBean.serviceStatusList}" var="status"
itemLabel="#{status.title}" itemValue="#{status.id}"/>
</p:selectManyCheckbox>
Сгенерированный html
![enter image description here]()
Javascript
function changeSelectAllStatus(element)
{
var selectAll = element.checked;
var serviceStatusChildNodes = document.getElementById("accord:empListSub").getElementsByTagName('input');
for ( var i in serviceStatusChildNodes ) {
if ( serviceStatusChildNodes[i].type=='checkbox' ) {
serviceStatusChildNodes[i].checked = selectAll;
}
}
if(selectAll)
{
selectAllStatusArray = selectAll;
}
else
{
selectAllStatusArray = selectAll;
}
}
Моя проблема заключается в том, когда отмечен флажок "Выбрать все", значения проверенных значений f: items установлены как истинные, но в пользовательском интерфейсе он не проверяется.
Может ли кто-нибудь указать, где я ошибся?
Ответы
Ответ 1
Просто вы можете сделать это:
<p:selectBooleanCheckbox itemLabel="Check All"
widgetVar="checkAllWV"
onchange="selectAllCheckBoxes(PF('manyCheckWV'))">
</p:selectBooleanCheckbox>
<p:selectManyCheckbox widgetVar="manyCheckWV">
<f:selectItems value="#{mainBean.list}"/>
</p:selectManyCheckbox>
onchange
booleanCheckbox будет управлять значениями manyCheckbox.
Теперь событие изменения
function selectAllCheckBoxes(manyCheckBoxes) {
manyCheckBoxes.inputs.each(function() {
if(PF('checkAllWV').isChecked()) {
$(this).prop('checked', false)
PF('checkAllWV').jq.find('.ui-chkbox-label').text('Uncheck all')
} else {
$(this).prop('checked', true)
PF('checkAllWV').jq.find('.ui-chkbox-label').text('Check all')
}
$(this).trigger('click');
})
}
Вы можете найти небольшой пример в github.