ign81
Premium+
- Регист
- 2 Апр 2019
- Сообщения
- 21
- Реакции
- 4
Скопировал с форума могуты (там все тухло).
Фильтр-ползунок, если характеристики записывать дробными числами неправильно работает. Проверил на тестовом сайте Главная
Порядок действий, например для товаров категории "Двери":
1. Изменил характеристику товаров "Толщина полотна": Использовать в фильтрах = да, Тип отображения в фильтре = Ползунок.
2. Добавил дробные значения характеристики из п.1 для товаров категории "Двери".
3. На странице фильтров отображение нормальное:
4. На странице категории в фильтрах движение ползунка только по целым числам (естественно передвинуть к краям ползунок не выходит):
Попробовал решить проблему в файле "mg-templates\moguta\components\filter\filter.js", заменил в коде:
Следующие значения:
Вроде сработало, но правая граница ползунка неверно выставляется при попытке возврата к исходному значению (округляется в меньшую сторону), т.е. достичь правой границы движением ползунка не получается.
Также было бы лучше если бы перед выводом ползунка в фильтрах шла проверка на целые или дробные числа. При дробных числах - проверка разрядности (исходя из этого выставлять шаг ползунка step = 0.1 или step = 0.01 и т.д).
Может кто поможет решить проблему?
Фильтр-ползунок, если характеристики записывать дробными числами неправильно работает. Проверил на тестовом сайте Главная
Порядок действий, например для товаров категории "Двери":
1. Изменил характеристику товаров "Толщина полотна": Использовать в фильтрах = да, Тип отображения в фильтре = Ползунок.
Попробовал решить проблему в файле "mg-templates\moguta\components\filter\filter.js", заменил в коде:
PHP:
// Собираем слайдер с ползунками для всех характеристик
$(".mg-filter-item .mg-filter-prop-slider").each(function (i) {
var min = parseInt($(this).data("min"));
var max = parseInt($(this).data("max"));
var fMin = (parseInt($(this).data("factmin"))) ? parseInt($(this).data("factmin")) : min;
var fMax = (parseInt($(this).data("factmax"))) ? parseInt($(this).data("factmax")) : max;
var sliderEl = $(this);
var minInput = $("input#Prop" + $(this).data("id") + "-min");
var maxInput = $("input#Prop" + $(this).data("id") + "-max");
var step = max / 10;
// Создаем ползунок
$(this).slider({
min: min,
max: max,
values: [fMin, fMax],
step: 1,
range: true,
stop: function (event, ui) {
minInput.val(sliderEl.slider("values", 0));
maxInput.val(sliderEl.slider("values", 1));
getFilteredItems(maxInput);
},
slide: function (event, ui) {
minInput.val(sliderEl.slider("values", 0));
maxInput.val(sliderEl.slider("values", 1));
}
});
// Создаем крючок для ввода из полей
minInput.change(function () {
var value1 = minInput.val();
var value2 = maxInput.val();
// Если значение ускакало за пределы
if (parseInt(value1) > parseInt(value2)) {
value1 = value2;
minInput.val(value1);
}
sliderEl.slider("values", 0, value1);
getFilteredItems(maxInput);
});
maxInput.change(function () {
var value1 = minInput.val();
var value2 = maxInput.val();
if (parseInt(value1) > parseInt(value2)) {
value2 = value1;
maxInput.val(value2);
}
sliderEl.slider("values", 1, value2);
getFilteredItems(maxInput);
});
});
Следующие значения:
parseInt на parseFloat
step: 0.001
Вроде сработало, но правая граница ползунка неверно выставляется при попытке возврата к исходному значению (округляется в меньшую сторону), т.е. достичь правой границы движением ползунка не получается.
Также было бы лучше если бы перед выводом ползунка в фильтрах шла проверка на целые или дробные числа. При дробных числах - проверка разрядности (исходя из этого выставлять шаг ползунка step = 0.1 или step = 0.01 и т.д).
Может кто поможет решить проблему?