在<p:selectCheckboxMenu中选择全部时,onchange事件不会触发

3
这是我的代码:
<p:selectCheckboxMenu  id="myselect" onchange="fixLable(this)" value="#{mybean.value}" >
        <f:selectItems  value="#{mybean.values}"/>
</p:selectCheckboxMenu>

我写了一个名为fixLable(this)的javascript函数,当选择复选框时会调用它。除了“全选”复选框外,每次单击复选框都会调用它。是否有单独的属性用于“全选”? 我在这里阅读到:p:selectCheckboxMenu 'Select all' ajax listener not invoked,可以使用toggleSelect ajax事件,然后使用onajaxstart或onsuccess等执行您的代码,但我不想使用ajax,因为它比仅在事件上调用javascript慢。 有什么建议吗?我相信您可以向“全选”复选框添加事件侦听器。

为什么不使用p:selectManyCheckbox,它可以处理您的多选。请在primeface showcase上查看http://www.primefaces.org/showcase/ui/input/manyCheckbox.xhtml。 - user1433804
因为它是一个完全不同的组件? - Kukeltje
我没有使用p:selectManyCheckbox,因为我希望它看起来像一个下拉框。而且,重复的答案建议使用ajax和“toggleSelect”事件。但我不想用ajax。我希望我的JavaScript函数在单击“全部选择”复选框时运行.....有什么建议吗? - Raz
1个回答

5

这可能有点误导性,但实际上您可以使用<p:ajax>元素来调用javascript函数,而不需要向服务器发送任何ajax请求。 <p:ajax>具有onstart属性,可以执行任何javascript代码。如果从该javascript块返回false,则阻止请求处理,因此不会将任何内容发送到服务器。

<p:ajax event="toggleSelect" onstart="fixLable(this); return false" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接