全选时不触发 <p:selectCheckboxMenu 中的 onchange 事件

Raz*_*Raz 3 javascript jsf primefaces

这是我的代码:

<p:selectCheckboxMenu  id="myselect" onchange="fixLable(this)" value="#{mybean.value}" >
        <f:selectItems  value="#{mybean.values}"/>
</p:selectCheckboxMenu>
Run Code Online (Sandbox Code Playgroud)

我已经写了一个名为fixlable的java脚本函数(这个),在选择一个复选框时将被调用。除了“全选”复选框外,每次单击复选框时都会调用它。为什么?“全选”是否有单独的属性?

我读入:p:selectCheckboxMenu 'Select all' ajax listener not call that you can use toggleSelect ajax event 然后使用onajaxstartonsuccess等执行你的代码......但我不想使用 ajax 因为它比仅仅调用一个慢javascript 上的事件。

有什么建议?我很肯定您可以将事件侦听器添加到“全选”复选框。

Sla*_*das 5

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

<p:ajax event="toggleSelect" onstart="fixLable(this); return false" />
Run Code Online (Sandbox Code Playgroud)