在f:selectitems的onchange上调用Javascript函数

时间:2014-08-23 06:54:14

标签: javascript jquery jsf primefaces

我是jquery的新手。我的项目调用了primefaces 4.0,jsf 2.1(xhtml)。

我有一个select all boolean复选框,以及一个selectmanycheckbox,它使用从服务器端检索的列表填充。

<p:tab title="Service Status" >
    <p:selectBooleanCheckbox itemLabel="Select All"
        value="#{myBean.selectAllStatus}"
        id="selectAllStatus" style="margin-left:4px;" onchange="selectAllStatus(this);" >
    </p:selectBooleanCheckbox>
    <p:selectManyCheckbox
        value="#{myBean.serviceStatusFilterList}"
        layout="pageDirection" id="empListSub">

        <f:param name="tabValue" value="1" />
        <f:selectItems value="#{serviceCalendarViewBean.serviceStatusList}" var="status"
            itemLabel="#{status.title}" itemValue="#{status.id}"/>
    </p:selectManyCheckbox>
</p:tab>
</p:accordion>

单击“全选”复选框时调用的Javascript是

function selectAllStatus(element)
{
   var selectAll = element.checked;
   $( 'input[id^="'accord:empListSub'"]' ).each(function(){
        this.checked=selectAll;
   });
}

当我取消选中'全选'复选框时,我需要取消选中f:selectitems生成的所有复选框,反之亦然。

更改事件的javascript中的以下代码在控制台中给了我一个错误。 错误是“意外的语法错误;”

$( 'input[id^="'accord:empListSub'"]' ).each(function(){
    this.checked=selectAll;
});

在网络中,javascript代码显示为

$( 'input[id^=&quot;'accord:empListSub'&quot;]' ).each(function(){
     this.checked=selectAll;
});

我尝试删除没用的双引号。

所以有人可以帮助我。

在jquery中,当我取消选中'全选'复选框时,我需要取消选中f:selectitems生成的所有复选框,反之亦然。

当我检查或取消选中任何一个f:selectItems时,它还必须调用另一个javascript函数。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

问题出在组件引用

$( 'input[name^=accord\\:empListSub]' ).each(function(i,obj){
    $('div .ui-chkbox-box').addClass('ui-state-active');
    $('span .ui-chkbox-icon').addClass('ui-chkbox-icon ui-icon ui-icon-check ui-c');
 );

答案 1 :(得分:0)

尝试在jQuery中使用 prop() 来设置已检查的属性

 $( 'input[id^='+accord:empListSub+']' ).prop("checked",selectAll);