[Решено] Views: Вопрос по фильтру цены в диапазоне

Главные вкладки

Аватар пользователя molp molp 5 сентября 2015 в 12:41

Здравствуйте.

Использую Better Exposed Filter с настройкой jQuery UI Slider для фильтрации цены на товары в диапазоне ОТ и ДО.
Задача в том чтобы при помощи JS форматировать значения этих полей.
К примеру имеем ОТ 0 ДО 100, а нужно сделать чтобы было ОТ 0*коэффициент ДО 100*коэффициент.

Использую в script.js следующий код:

(function ($) {
        Drupal.behaviors.themename = {
        attach: function(context, settings) {

        // Коэфициент - курс
                var rate_string = $("#block-views-rate-block .rate_var").text();
                var rate = rate_string.replace(/\s+/g, '');
        // Значение по умолчанию
                var min_val = $("#edit-field-price-ye-value-min").val();
                var max_val = $("#edit-field-price-ye-value-max").val();
                $("#edit-field-price-ye-value-min").val(min_val * rate);
                $("#edit-field-price-ye-value-max").val(max_val * rate);
        // Значение после перетягивания ползунка
                $( "#edit-field-price-ye-value-wrapper" ).on( "slide", function( event, ui ) {
                        var min_val2 = $("#edit-field-price-ye-value-min").val();
                        var max_val2 = $("#edit-field-price-ye-value-max").val();
                        $("#edit-field-price-ye-value-min").val(min_val2 * rate);
                        $("#edit-field-price-ye-value-max").val(max_val2 * rate);
                });
               
        }};
})(jQuery);

Кроме того что значение изменяется некорректно - каждый раз на единицу отстает от актуального (если тянем вперед на 5 то значение остается на 4 и в обратную сторону, если тянем на 0 то остается 1), то еще почему то не работает событие change и другие, а только slide.

Прошу подсказать решение или в чем может быть проблема?

Комментарии

Аватар пользователя molp molp 5 сентября 2015 в 15:02

Потому что надо правильно значения получать:

$("#edit-field-price-ye-value-wrapper").on("slide", function(event, ui) {
        var min = ui.values[0];
        var max = ui.values[1];
});