web-dev-qa-db-fra.com

Existe-t-il un moyen de fournir une case à cocher Sélectionner tout / Tout cocher pour un champ qui affiche plusieurs cases à cocher dans Drupal 7?

Il semble qu'il n'y ait pas de configuration de base pour configurer une case à cocher "Tout vérifier", sauf si j'ai raté où il se trouve. Je crée un type de contenu et j'ai un champ de référence de taxonomie et j'ai beaucoup de termes, ce qui signifie beaucoup de cases que je dois vérifier. Quoi qu'il en soit pour fournir une case à cocher pour tout sélectionner?

6
Patoshi パトシ

Voici une version mise à jour du code @duckx, elle présente les améliorations suivantes:
- cochez uniquement les cases de l'étiquette sur laquelle vous avez cliqué
- permet de basculer les cases à cocher

Drupal.behaviors.selectAll = {
  attach: function (context, settings) {
    $('body.page-node .form-type-checkboxes > label').click(function() {
        $(this).nextAll('.form-checkboxes').find('input[type="checkbox"]').trigger('click');
    });
  }
};
1
tostinni

Ce module contrib semble faire l'affaire: https://www.drupal.org/project/checkall

1
joachim

Vous pouvez modifier un formulaire. hook_form_alter et attachez vos js au formulaire.

$form['#attached']['js'] = array(
  drupal_get_path('module', 'YOURMODULE') . '/YOURMODULE.js',
);

Ajoutez ensuite le code comme dans ici

1
heshanlk

Voici un extrait rapide pour tous ceux qui recherchent une vérification rapide de toutes les fonctionnalités. Cela rendra fondamentalement votre ÉTIQUETTE de champ un bouton cocher tout. Pas besoin d'ajouter d'éléments ou de modules HTML supplémentaires. Cela fonctionne.

Vous pouvez à peu près copier ceci dans votre fichier js et cela fonctionnera simplement car je l'ai restreint à travailler uniquement sur les pages d'édition de contenu.

Évidemment, ce n'est pas une solution à long terme, mais principalement comme un correctif rapide.

jQuery(document).ready(function($) {
  var $checkBoxes = $('input[type="checkbox"]');
  $('body.page-node .form-type-checkboxes > label').click(function() {
      $checkBoxes.attr('checked', true);
  });                                                                                                                                                                                            
});
1
Patoshi パトシ

Il n'y a pas d'option de configuration de base pour quelque chose comme ça, il faudrait que ce soit JavaScript/jQuery ( http://jsfiddle.net/PtMrM/ ).

<a href="#" class="check-all">Check All</a>
<label><input type="checkbox" name="ny"> New York</label>
<label><input type="checkbox" name="bos"> Boston</label>
<label><input type="checkbox" name="sfo"> San Francisco</label>
<label><input type="checkbox" name="dc"> Wasington DC</label>
<script type="text/javascript">
  (function($) {
    var $checkBoxes = $('input[type="checkbox"]');
    $('.check-all').click(function() {
      $checkBoxes.attr('checked', true);
    });
  }(jQuery))
</script>

Veuillez noter que c'est très rapide js, et ne sera pas très convivial (par exemple, ils cliquent dessus, il n'y a aucun moyen de décocher)

0
Chris Rockwell