Golovina90
@Golovina90
Начинающий Web-Master

Почему умном фильтре не работают числовые свойства?

Здравствуйте.
Вот тут на сайте есть Умный Фильтр слева. Он является частью компонента Каталог. Свойства по типу "Список" в нём работают, фильтрация проходит и выводится количество элементов. Но вот в свойствах типа "Число" при изменении значения или расположения ползунка появляется число элементов для вывода. НО! Оно не меняется и фильтрация не проходит.
В чём может быть проблема?
Кусок компонента с параметрами фильтра:
"FILTER_FIELD_CODE" => array(0=>"NAME",1=>"",),
		"FILTER_HIDE_ON_MOBILE" => "Y",
		"FILTER_NAME" => "arrFilter",
		"FILTER_PRICE_CODE" => array(0=>"CASH",),
		"FILTER_PROPERTY_CODE" => array(0=>"ATT_MATERIAL",1=>"ATT_STYLE",2=>"ATT_NUMBER",3=>"ATT_ROOM",4=>"ATT_APPOINTMENT",5=>"ATT_CHARACTERISTIC",6=>"ATT_HEIGT",7=>"ATT_WIDHT",8=>"ATT_DEPHT",9=>"",),
		"FILTER_VIEW_MODE" => "VERTICAL",
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
@PetrPo
В шаблоне фильтра в файле script.js есть функция JCSmartFilter.prototype.gatherInputsValues - в ней какой-то косяк, если отключишь объединение js в главном модуле, смогу точнее сказать в чем проблема. Для теста можешь заменить на дефолтную
spoiler

JCSmartFilter.prototype.gatherInputsValues = function (values, elements)
{
	if(elements)
	{
		for(var i = 0; i < elements.length; i++)
		{
			var el = elements[i];
			if (el.disabled || !el.type)
				continue;

			switch(el.type.toLowerCase())
			{
				case 'text':
				case 'textarea':
				case 'password':
				case 'hidden':
				case 'number':
				case 'phone':
				case 'email':
				case 'select-one':
					if(el.value.length)
						values[values.length] = {name : el.name, value : el.value};
					break;
				case 'radio':
				case 'checkbox':
					if(el.checked)
						values[values.length] = {name : el.name, value : el.value};
					break;
				case 'select-multiple':
					for (var j = 0; j < el.options.length; j++)
					{
						if (el.options[j].selected)
							values[values.length] = {name : el.name, value : el.options[j].value};
					}
					break;
				default:
					break;
			}
		}
	}
};


В этой функции должен быть case 'number': скорее всего или его не хватает или там какая-то кривая логика написана
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы