Зависимые фильтры в mFilter modx не показывают option
Настраиваю зависимые фильтры mFilter(из компонента mSearch2) для сайта на modx. За основу взял информацию из docs.modx.pro/komponentyi/msearch2/tipovyie-resheniya/zavisimyie-filtryi
При выборе определенной марки появляется select, но вот option не видно (display: none;) Где его убрать можно, подскажите пожалуйста или в чем-то другом проблема? Спасибо.
- опции товара - марка и модель созданы.
- Сам скрипт:
<script>
var modelFilter = {
// Наши селекторы
options: {
marka: '#mse2_msoption\\|marka',
model: '#mse2_msoption\\|model',
},
// Запуск функции
initialize: function() {
$this = this;
// Получаем нужные элементы исохраняем как свойства объекта
this.marka = $(this.options['marka']);
this.model = $(this.options['model']);
// Смотрим в параметры адресной строки на предмет выбранной марки
var params = mSearch2.Hash.get();
// Если нет - отключаем модели
if (params['marka'] == undefined) {
$this.disableModel();
}
// Если есть - включаем
else {
$this.enableModel();
}
// Вешаем обработчик на изменение марки
this.marka.find('select').on('change', function() {
// Если что-то выбрано, то включаем модели
if ($(this).val() != '') {
// Переключем модель на первый пункт "Выберите из списка"
$this.model.find('option:first').attr('selected', true);
// И активируем блок
$this.enableModel();
}
// Если нет - отключаем
else {
$this.disableModel();
}
})
},
// Функция отключения моделей
disableModel: function() {
// Ищем все поля с непустым value
$this.model.find('option[value!=""]').attr('selected', false).attr('disabled', true);
// И прячем весь блок
$this.model.hide();
},
// Функция включения моделей
enableModel: function() {
// Получаем марку автомобиля
var marka = this.marka.find(':selected').text().replace(/\(.*?\)$/, '').replace(/\s+$/, '');
var re = new RegExp('^' + marka);
// Пробегаем по всем моделям и проверяем имя
$this.model.find('option').each(function() {
var $this = $(this);
// Имя не совпадает - нужно отключить эту модель
if (!$this.text().match(re) && $this.prop('value') != '') {
$this.attr('disabled', true);
$this.hide();
}
// В противном случае - включить
else {
$this.attr('disabled', false);
$this.show();
}
});
// И показываем весь блок с моделями
$this.model.show();
},
}
// Скрипт запускается после полной загрузки документа
$(document).ready(function() {
// И если на странице есть фильтры
if ($('#mse2_mfilter').length > 0) {
modelFilter.initialize();
}
});
</script>
Чанк для фильтра
<section class="mainFilter">
<div class="search">
[[!mFilter2?
&class=`msProduct`
&element=`msProducts`
&tplOuter=`tpl.mFilter2.outerAim`
&tpl=`tpl.msProductsAim.row`
&limit=`12`
&aliases=`
msoption|marka==marka,
msoption|model==model,
resource|parent:parents,
msoption|partname==partname,
`
&filters=`
msoption|marka,
msoption|model,
resource|parent:parents,
msoption|partName
`
&suggestionsRadio=`
msoption|marka,
msoption|model
`
&sort=`
ms_product|publishedon:asc
`
&tplFilter.outer.marka=`tpl.mFilter2.filter.select`
&tplFilter.row.marka=`tpl.mFilter2.filter.option`
&tplFilter.outer.model=`tpl.mFilter2.filter.select`
&tplFilter.row.model=`tpl.mFilter2.filter.option`
&tplFilter.row.resource|parent=`tpl.mFilter2.filter.option`
&tplFilter.outer.resource|parent=`tpl.mFilter2.filter.select`
&tplFilter.outer.partname=`tpl.mFilter2.filter.select`
&tplFilter.row.partname=`tpl.mFilter2.filter.option`
]]
</div>
