2017-10-17 47 views
2

是否有一種簡單的方法來選擇/取消選擇使用JavaScript的p:selectManyCheckbox中的所有複選框?PrimeFaces SelectManyCheckbox - 取消選中所有使用Javascript的複選框

我找到了現在的工作,但我的方法似乎的東西過於複雜,我覺得應該從PrimeFaces

下面

代碼簡單:

的選擇布爾複選框:

<p:selectManyCheckbox id="multiSelectPerformanceCb" 
    widgetVar="multiSelectPerformanceCb" 
    value="#{cc.attributes.filter.selectedCriteria}"> 
     <f:selectItems value="#{cc.attributes.filter.performanceCriteria}" 
      var="criteria" itemLabel="#{criteria.text}" 
      itemValue="#{criteria.description}" /> 
</p:selectManyCheckbox> 

點擊按鈕時運行的方法:

function performanceSliderBooleanClick() 
    //Uncheck the inputs 
    PF('multiSelectPerformanceCb').inputs.each(function(){ 
     this.checked = false; 
    }); 

    //Remove ui-state-active from the outputs 
    PF('multiSelectPerformanceCb').outputs.each(function(){ 
     $(this).removeClass('ui-state-active'); 
    }); 
} 

回答

1

Neve r參數使用PrimeFaces,但在看看他們的網頁我想嘗試這個(重要:與形式的id替換[yourformid](你不顯示在你的問題的表單元素))...

FOR取消選擇

function performanceSliderBooleanClick() { 
    $('#[yourformid]\\:multiSelectPerformanceCb').find('div.ui-chkbox-box') 
               .removeClass('ui-state-active') 
               .find('span.ui-chkbox-icon') 
               .removeClass('ui-icon-check') 
               .addClass('ui-icon-blank'); 
} 

用於切換(選擇所有/取消選擇所有)

function performanceSliderBooleanClick() { 
    $('#[yourformid]\\:multiSelectPerformanceCb').find('div.ui-chkbox-box') 
               .toggleClass('ui-state-active') 
               .find('span.ui-chkbox-icon') 
               .toggleClass('ui-icon-check ui-icon-blank'); 
} 
+0

這適用於處理UI的JavaScript解決方案,但無法與後端連接起作用。我正在尋找更多的PrimeFaces解決方案潛在的使用widgetVar或內置PrimeFaces方法,但我給了你一個upvote,因爲我喜歡這個解決方案,儘可能簡化我在多行中做的UI清理 –

+1

@TonyScialo:你的解決方案更多符合PrimeFaces的小部件方法,並且不依賴於組件的結構設計。你可以對[source]做一些小的修改(https://github.com/primefaces/primefaces/blob/master/src/main/resources/META-INF/resources/primefaces/forms/forms.selectmanycheckbox.js)這個組件,並使其成爲一個真正的小部件功能(檢查其他可比較的組件)。然後,您可以通過提交請求將其作爲發行人的增強功能進行歸檔。 – Kukeltje

相關問題