2017-10-17 21 views
2

Existe-t-il un moyen facile de sélectionner/désélectionner toutes les cases d'un p: selectManyCheckbox en utilisant JavaScript?PrimeFaces SelectManyCheckbox - Décochez toutes les cases en utilisant Javascript

Je l'ai travaille en ce moment, mais ma méthode semble trop compliqué pour quelque chose que je me sens devrait être simple de PrimeFaces

code ci-dessous:

La case de sélection booléenne:

<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> 

Une méthode qui est exécutée sur un bouton cliquez:

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'); 
    }); 
} 

Répondre

1

Neve r utilisé PrimeFaces, mais ayant un regard sur leur page j'essayer (IMPORTANT: Remplacer [yourformid] avec le id de la forme (vous ne vous présentez pas l'élément de forme dans votre question)) ...

POUR désélectionnant:

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'); 
} 

POUR BASCULEMENT (tout sélectionner/désélectionner tous):

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

Cela fonctionne pour une solution JavaScript pour gérer l'interface utilisateur mais ne fonctionnera pas aussi loin que le raccordement avec le backend. Je cherchais plutôt une solution PrimeFaces utilisant potentiellement un widgetVar ou une méthode intégrée PrimeFaces mais je vous ai donné un upvote parce que j'aime cette solution pour simplifier le nettoyage de l'interface utilisateur que je faisais sur plusieurs lignes –

+1

@TonyScialo: votre solution est plus en aligner avec l'approche widget de PrimeFaces et ne repose pas sur la conception structurelle des composants. Vous pouvez apporter quelques petites modifications à la [source] (https://github.com/primefaces/primefaces/blob/master/src/main/resources/META-INF/resources/primefaces/forms/forms.selectmanycheckbox.js) de ce composant et en faire une véritable fonction de widget (vérifier d'autres composants comparables). Vous pouvez ensuite le déposer comme une amélioration dans le issuelist avec une demande de traction. – Kukeltje