如何使用jQuery修改一组具有相同类的p:selectBooleanCheckbox?

时间:2019-02-25 15:02:48

标签: javascript jsf primefaces

我有一个PrimeFaces p:selectBooleanCheckbox

<p:selectBooleanCheckbox styleClass="myCLass" onchange="callsMethod();" value="true" />

我想要这样的东西: $('.myCLass').prop( 'checked', true )用于动态设置p:selectBooleanCheckbox的值。

2 个答案:

答案 0 :(得分:3)

比使用widgetVar轻松得多。

  1. 向您的组件添加一个widgetVar,例如...
<p:selectBooleanCheckbox widgetVar="wgtMyCheckBox" onchange="callsMethod();"  />
  1. 在您的Javascript代码中,使用WidgetVar获取或设置值。
    PF('wgtMyCheckBox').isChecked(); -- returns current state
    PF('wgtMyCheckBox').check(); -- checks the box
    PF('wgtMyCheckBox').uncheck(); -- unchecks the box
    PF('wgtMyCheckBox').toggle(); -- toggles the current state to the opposite state

如果要选中屏幕上的所有复选框,可以在小部件上循环。

for (var widgetVar in PrimeFaces.widgets) {
   var widget = PrimeFaces.widgets[widgetVar];
   if (widget && widget instanceof PrimeFaces.widget.SelectBooleanCheckbox) { 
       widget.check();
   }
}

答案 1 :(得分:2)

您可以使用PrimeFaces.getWidgetById方法为分配了styleClass的每个复选框获取Primefaces小部件:

切换所有具有styleClass="myCLass"的复选框:

$('.myCLass').each(function(){PrimeFaces.getWidgetById(this.id).toggle()});

选中所有具有styleClass="myCLass"的复选框:

$('.myCLass').each(function(){PrimeFaces.getWidgetById(this.id).check()});

取消选中所有具有styleClass="myCLass"的复选框:

$('.myCLass').each(function(){PrimeFaces.getWidgetById(this.id).uncheck()});