Открытое поле таксономии в фильтрах представлений


У меня есть поле таксономии в моем представлении в фильтрах, и я сделал его доступным для пользователей с типом выбора "выпадающий список" вместе с "Показывать иерархию в раскрывающемся списке", как указано.

Я также использую Улучшенные открытые фильтры (BEF) модуль, в настройках которого я выбрал опцию отображения открытого фильтра в виде "вложенных флажков/переключателей".

Также в разделе дополнительные параметры в настройках BEF я выбрал "Добавить вложенный выбор все/нет", чтобы если выбран родительский термин таксономии, то все дочерние термины таксономии также должны быть выбраны, и наоборот. Но эта вещь работает неправильно, после выбора родительского термина все дочерние термины не выбираются, и после выбора всех дочерних терминов родительский термин по умолчанию не выбирается.

Может ли кто-нибудь предложить идеи, как заставить это работать должным образом. заранее спасибо!!

Author: CodeNext, 2016-07-21

1 answers

Решена с помощью следующего кода jQuery:-

$('.bef-tree input:checkbox').click(function() {
            var $this = $(this);
            if ($this.is(':checked')) {
            // Check all child checkboxes
            $this.closest('li').find('input:checkbox').prop('checked', true).change();

            // If all siblings are checked, the also check the parent term
                if ($this.closest('li').siblings('li').find('input:checkbox[checked="true"]').length
                == $this.closest('li').siblings('li').find('input:checkbox').length
                ) {
                    $this.closest('li').parent().closest('li').find('input:checkbox').prop('checked', true).change();
                }
            }
            else {
            // Uncheck all child checkboxes
                $this.closest('li').find('input:checkbox').prop('checked', false).change();

            // Uncheck all parent checkboxes of this element
                $this.parentsUntil('ul.bef-tree').filter('li').each(function() {
            // NOTE: "this" is no longer the closure variable, but the filtered
            //       li elements we selected and are iterating through.
                $(this).find('input:checkbox:first').prop('checked', false).change();
                });
            }     
        });
 1
Author: Gaurav Rajdeo, 2016-07-25 08:51:15