【问题标题】:check f:items value based on p:selectManyCheckbox using javascript使用 javascript 检查基于 p:selectManyCheckbox 的 f:items 值
【发布时间】:2014-09-22 09:11:27
【问题描述】:

我想知道如何使用 javascript 根据 p:selectManyCheckbox 检查 f:items 值。

我所做的是 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是

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 选中的值被设置为 true,但在用户界面中它没有被选中。 谁能指出我哪里出错了?

【问题讨论】:

    标签: javascript primefaces


    【解决方案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>
    

    booleanCheckbox 的onchange 将控制 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找到一个小例子。

    【讨论】:

      猜你喜欢
      • 2021-11-27
      • 2011-03-31
      • 2018-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-21
      相关资源
      最近更新 更多