Перейти к содержимому


Фотография
- - - - -

Слайдер. Вводимые значения.


Лучший Ответ Ichimaru , 24 October 2013 - 20:43

Тогда тут определенно не весь код есть.
Т.к нет правок с моих последних замечаний о скрытом инпуте.

Было бы намного проще, если бы вы дали ссылку.

Я чуть выше написал что у меня не вышло выполнить ваши правки, слайдер попусту переставал отображаться.
 
Ниже, ВЕСЬ код, от корки до корки
 
 
   
/**
 * Render jQueryUI slider
 * @param array $params
 * @param string $value
 * @param string $name
 * @param string $idtag
 * @return string
 */
public function slider($params, $value = '', $name = '', $idtag = '')
{
    if (!empty($value) && is_string($value)) {
        $value = explode('/', $value);
    } else {
        $value = array($params['min'], $params['max']);
    }

    $this->app->jbassets->jqueryui();
    $this->app->jbassets->addScript('jQuery(function($){ 
        var inputMin = $("#' . $idtag . '-value-0");
        var inputMax = $("#' . $idtag . '-value-1");
        $("#' . $idtag . '-wrapper").removeAttr("slide");
        $("#' . $idtag . '-wrapper")[0].slide = null;
        $("#' . $idtag . '-wrapper").slider({
            "range" : true,
            "min"   : ' . ((float)$params['min'] ? round((float)$params['min'], 2) : 0) . ',
            "max"   : ' . ((float)$params['max'] ? round((float)$params['max'], 2) : 10000) . ',
            "step"  : ' . ((float)$params['step'] ? round((float)$params['step'], 2) : 100) . ',
            "values": [' . round((float)$value['0'], 2) . ', ' . round((float)$value['1'], 2) . '],
            "stop" : function(event, ui) {
                $("#' . $idtag . '-value").val(ui.values[0] + "/" + ui.values[1]);
                $("#' . $idtag . '-value-0").val(numberFormat(ui.values[0], 0, ".", " "));
                $("#' . $idtag . '-value-1").val(numberFormat(ui.values[1], 0, ".", " "));
            },
            "slide" : function(event,ui) {
                $("#' . $idtag . '-value").val(ui.values[0] + "/" + ui.values[1]);
                $("#' . $idtag . '-value-0").val(numberFormat(ui.values[0], 0, ".", " "));
                $("#' . $idtag . '-value-1").val(numberFormat(ui.values[1], 0, ".", " ")); 
            }
        });
        
        $("#' . $idtag . '-value-0").change(function(){
            var value1 = jQuery("input#' . $idtag . '-value-0").val();
            var value2 = jQuery("input#' . $idtag . '-value-1").val(); 
            if (value1 < 0) { value1 = 0; jQuery("input#' . $idtag . '-value-0").val(0)}
            if(parseInt(value1) > parseInt(value2)){
                value1 = value2;
                jQuery("input#' . $idtag . '-value-0").val(value1);
            }
            jQuery("#' . $idtag . '-wrapper").slider("values",0,value1); 
        }); 
        
        $("#' . $idtag . '-value-1").change(function(){
            var value1 = jQuery("input#' . $idtag . '-value-0").val();
            var value2 = jQuery("input#' . $idtag . '-value-1").val();
            if (value2 > 30000) { value2 = 30000; jQuery("input#' . $idtag . '-value-1").val(30000)}
            if(parseInt(value1) > parseInt(value2)){
                value2 = value1;
                jQuery("input#' . $idtag . '-value-1").val(value2); 
            }
        
            jQuery("#' . $idtag . '-wrapper").slider("values",1,value2);
        }); 
        
        $("#' . $idtag . '-value").val(' . (float)$value['0'] . '+ "/" +' . (float)$value['1'] . ');
    });');
    
    return '<div id="' . $idtag . '-wrapper"> </div>' . "\n"
        . '<input id="' . $idtag . '-value-0" class="slider-value-0" value="' . $value['0'] . '"/>' . "\n"
        . '<input id="' . $idtag . '-value-1" class="slider-value-1" value="' . $value['1'] . '"/>' . "\n"  
        . '<input type="hidden" id="' . $idtag . '-value" name="' . $name . '" />' . "\n";
}
Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 16

#11 Akela

Akela

Отправлено 23 October 2013 - 11:07

А как в принципе вывести слайдер с инпутами? Дописывать инпуты в код?

В настройках фильтра я вижу только "Диапазон по числам - слайдер" и "Диапазон по числам". Комбинации этих вариантов вроде нет.


  • 0

#12 Sliapy

Sliapy

Отправлено 23 October 2013 - 11:17

Если бы она была, то о чем тогда вся эта тема? :)


Сообщение отредактировал Sliapy: 23 October 2013 - 11:17

  • 0
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]

#13 Akela

Akela

Отправлено 23 October 2013 - 11:28

ок :)

 

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

 

В материалах в админке в этом поле стоят 4 чекбокса где ставится соответствующая галка. А заказчику именно на это поле  в фильтре нужен слайдер и ничто другое.


Сообщение отредактировал Akela: 23 October 2013 - 11:34

  • 0

#14 Ichimaru

Ichimaru

Отправлено 23 October 2013 - 19:22

Можете дать ссылку, где посмотреть результат вашей работы?

Все что я "наработал" я скинул сюда. Разработку веду на денвере. 


  • 0

#15 SmetDenis

SmetDenis

Отправлено 24 October 2013 - 06:48

Все что я "наработал" я скинул сюда. Разработку веду на денвере.


Тогда тут определенно не весь код есть.
Т.к нет правок с моих последних замечаний о скрытом инпуте.

Фильтрация будет проходить на основе данных из поля


Было бы намного проще, если бы вы дали ссылку.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#16 Ichimaru

Ichimaru

Отправлено 24 October 2013 - 20:43   Лучший Ответ

Тогда тут определенно не весь код есть.
Т.к нет правок с моих последних замечаний о скрытом инпуте.

Было бы намного проще, если бы вы дали ссылку.

Я чуть выше написал что у меня не вышло выполнить ваши правки, слайдер попусту переставал отображаться.
 
Ниже, ВЕСЬ код, от корки до корки
 
 
   
/**
 * Render jQueryUI slider
 * @param array $params
 * @param string $value
 * @param string $name
 * @param string $idtag
 * @return string
 */
public function slider($params, $value = '', $name = '', $idtag = '')
{
    if (!empty($value) && is_string($value)) {
        $value = explode('/', $value);
    } else {
        $value = array($params['min'], $params['max']);
    }

    $this->app->jbassets->jqueryui();
    $this->app->jbassets->addScript('jQuery(function($){ 
        var inputMin = $("#' . $idtag . '-value-0");
        var inputMax = $("#' . $idtag . '-value-1");
        $("#' . $idtag . '-wrapper").removeAttr("slide");
        $("#' . $idtag . '-wrapper")[0].slide = null;
        $("#' . $idtag . '-wrapper").slider({
            "range" : true,
            "min"   : ' . ((float)$params['min'] ? round((float)$params['min'], 2) : 0) . ',
            "max"   : ' . ((float)$params['max'] ? round((float)$params['max'], 2) : 10000) . ',
            "step"  : ' . ((float)$params['step'] ? round((float)$params['step'], 2) : 100) . ',
            "values": [' . round((float)$value['0'], 2) . ', ' . round((float)$value['1'], 2) . '],
            "stop" : function(event, ui) {
                $("#' . $idtag . '-value").val(ui.values[0] + "/" + ui.values[1]);
                $("#' . $idtag . '-value-0").val(numberFormat(ui.values[0], 0, ".", " "));
                $("#' . $idtag . '-value-1").val(numberFormat(ui.values[1], 0, ".", " "));
            },
            "slide" : function(event,ui) {
                $("#' . $idtag . '-value").val(ui.values[0] + "/" + ui.values[1]);
                $("#' . $idtag . '-value-0").val(numberFormat(ui.values[0], 0, ".", " "));
                $("#' . $idtag . '-value-1").val(numberFormat(ui.values[1], 0, ".", " ")); 
            }
        });
        
        $("#' . $idtag . '-value-0").change(function(){
            var value1 = jQuery("input#' . $idtag . '-value-0").val();
            var value2 = jQuery("input#' . $idtag . '-value-1").val(); 
            if (value1 < 0) { value1 = 0; jQuery("input#' . $idtag . '-value-0").val(0)}
            if(parseInt(value1) > parseInt(value2)){
                value1 = value2;
                jQuery("input#' . $idtag . '-value-0").val(value1);
            }
            jQuery("#' . $idtag . '-wrapper").slider("values",0,value1); 
        }); 
        
        $("#' . $idtag . '-value-1").change(function(){
            var value1 = jQuery("input#' . $idtag . '-value-0").val();
            var value2 = jQuery("input#' . $idtag . '-value-1").val();
            if (value2 > 30000) { value2 = 30000; jQuery("input#' . $idtag . '-value-1").val(30000)}
            if(parseInt(value1) > parseInt(value2)){
                value2 = value1;
                jQuery("input#' . $idtag . '-value-1").val(value2); 
            }
        
            jQuery("#' . $idtag . '-wrapper").slider("values",1,value2);
        }); 
        
        $("#' . $idtag . '-value").val(' . (float)$value['0'] . '+ "/" +' . (float)$value['1'] . ');
    });');
    
    return '<div id="' . $idtag . '-wrapper"> </div>' . "\n"
        . '<input id="' . $idtag . '-value-0" class="slider-value-0" value="' . $value['0'] . '"/>' . "\n"
        . '<input id="' . $idtag . '-value-1" class="slider-value-1" value="' . $value['1'] . '"/>' . "\n"  
        . '<input type="hidden" id="' . $idtag . '-value" name="' . $name . '" />' . "\n";
}

  • 0

#17 SmetDenis

SmetDenis

Отправлено 27 October 2013 - 10:40

Вот эта строка должна выполнятся на любые изменения в input'ах + инициализация.
$("#' . $idtag . '-value").val(' . (float)$value['0'] . '+ "/" +' . (float)$value['1'] . ');
Сейчас он находится вне колбека change
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.





Click to return to top of page in style!