Вы здесь

Убрать нули из Better Exposed Filter с jQuery UI slider

1

Добрый день!

Вопрос вот в чем:
есть раскрытый фильтр вида: http://joxi.ru/brRDPPpuRXj821
т.е. цена берется из поля, вида 10000000, это не так, как надо.
Необходимо чтобы цена в этих полях была в виде 10, 15, 5 (т.е. просто млн.).

Какие есть предложения или советы чтобы реализовать данную пост-, или пред-"обработку" ?

Версия Drupal: 
7.x
Категория: 
Form API
Связанные проекты: 
Better Exposed Filters
Вопрос задан 06.06.2015 - 18:49
Аватар пользователя Apuox
Apuox
18

Ответы

1

В общем, взялся за решение с помощью css.
В итоге получилось вот так(т.е. без изъянов): http://joxi.ru/gmvRyy9FKLpWma

Алгоритм использовавшийся мною, примерно таков:
1. Добавил блок, только для страницы с фильтром
2. Добавил в него разметку вида:

<html>
    <head></head>
    <body>
        <div class="overlay-filter-wrap">
            <span class="txt1">от</span>
            <div class="price-min-wrap">&nbsp;</div>
            <span class="txt1">до</span>
            <div class="price-max-wrap">&nbsp;</div>
            <span class="txt1">млн.руб</span>
        </div>
    </body>
</html>
  1. Добавил обработчик на document.ready (дабы подгружать значения изначально в целевые блоки:
<script>
    function mln(v) {
        return v/1000000;
    };
    $('.price-max-wrap').html(mln($('input#edit-field-price-value-max').val()));
    $('.price-min-wrap').html(mln($('input#edit-field-price-value-min').val()));
</script>
  1. Добавил обработчик на событие "change" (в новом виде, с "живым отслеживанием"):
<script>
    $(document).on('change','input#edit-field-price-value-max',function(){
        var temp = jQuery(this).val();
        $('.price-max-wrap').html(mln(temp));
    });
</script>
  1. отпозиционировал целевые блоки там, где это необходимо
  2. скрыл стандартные input-ы, простым display:none;

Если ничего не упустил, в итоге слайдер корректно без каких-либо задержек/глюков показывает правильное значение в нужных мне блоках.

Вопрос можно считать решенным (не нашел где чекнуть).

Ответ дан 08.06.2015 - 11:21
Аватар пользователя Apuox
Apuox
18
0

как вариант JS - или же само значение поля переводить в 10 млн.

Ответ дан 06.06.2015 - 19:42
Аватар пользователя Denis
Denis
58

Дело в том, что в последствии это значение используется самим BEF, поэтому поменять его программно в input-e не составляет труда, в последствии используется неправильное значение (т.е. именно "5", вместо 5 000 000 )

Комментарий оставлен 06.06.2015 - 21:20

т.е нужно чтобы программно было наприме 10 000 000 а "визуально" 10млн ?
в голову пришел сумасшедший костыль с css. но тут зависимости от величины числе.
например 10 000 000, div в котором находится число - overlay:hidden и выставляем ширину, в псевдокласс ater добавляем content:'млн'
о_О

Ну, или же искать какие то варианты на jquery

Комментарий оставлен 06.06.2015 - 23:48

Все верно, программный смысл именно таков, значение варьируются от 1 до 15 млн.
Попробую сначала раскрутить модуль, поискать, возможно где-то найду "взятие" значений из input-а, и там обработаю путем увеличения до млн.
В крайнем случае буду пробовать костыльную css-стратегию =\

Комментарий оставлен 07.06.2015 - 00:07