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


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

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


Лучший Ответ 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

#1 Ichimaru

Ichimaru

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

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

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

Дело в том что иногда диапазон (скажем цен) довольно большой и возникает сложность в выборе диапазона.

 


  • 0

#2 Ichimaru

Ichimaru

Отправлено 18 October 2013 - 19:05

Ребят, есть мысли?
 
Судя по всему вот в этом коде нужно что то поправить.
 

$this->app->jbassets->jqueryui();
$this->app->jbassets->addScript('jQuery(function($){
    $("#' . $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) . '],
            "slide" : function(event,ui) {
                $("#' . $idtag . '-value").val(ui.values[0] + "/" + ui.values[1]);
                $("#' . $idtag . '-value-0").html(numberFormat(ui.values[0], 0, ".", " "));
                $("#' . $idtag . '-value-1").html(numberFormat(ui.values[1], 0, ".", " "));
            }
        });
    $("#' . $idtag . '-value").val(' . (float)$value['0'] . '+ "/" +' . (float)$value['1'] . ');
});');

return '<div id="' . $idtag . '-wrapper"> </div>' . "\n"
    . '<span id="' . $idtag . '-value-0" class="slider-value-0">' . $value['0'] . '</span>' . "\n"
    . '<span id="' . $idtag . '-value-1" class="slider-value-1">' . $value['1'] . '</span>' . "\n"
    . '<input type="hidden" id="' . $idtag . '-value" name="' . $name . '" />' . "\n";

  • 0

#3 SmetDenis

SmetDenis

Отправлено 18 October 2013 - 20:33

Добрый день.

Слайдер можно модифицировать как примере

Один из примеров
http://www.xiper.net...slider-add.html
http://www.xiper.net.../ui/ui-slider2/

Если кратко, то на изменение ипунтов нужно выполнять следующий код.
$(".selector").slider( "option", "values", [ $('.valMin').val(), $('.valMax').val() ] );
API jQuery http://api.jqueryui..../#method-values
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



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


#4 Ichimaru

Ichimaru

Отправлено 18 October 2013 - 21:23

Добрый день.

Слайдер можно модифицировать как примере

Один из примеров
http://www.xiper.net...slider-add.html
http://www.xiper.net.../ui/ui-slider2/

Если кратко, то на изменение ипунтов нужно выполнять следующий код.

$(".selector").slider( "option", "values", [ $('.valMin').val(), $('.valMax').val() ] );
API jQuery http://api.jqueryui..../#method-values

 

 

Спасибо большое за ответ Денис!

 

Но есть некоторые трудности с восприятием кода jbZoo (навыков не хватает), не могли бы вы подробнее "разжевать" данную модификацию?

Заранее спасибо!


  • 0

#5 SmetDenis

SmetDenis

Отправлено 18 October 2013 - 21:34

Здесь нет кода JBZoo.
Только jQuery. Его можно объявить практически в любом месте.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



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


#6 Ichimaru

Ichimaru

Отправлено 18 October 2013 - 21:36

Здесь нет кода JBZoo.
Только jQuery. Его можно объявить практически в любом месте.

 

Страница перестает загружаться.


  • 0

#7 Ichimaru

Ichimaru

Отправлено 21 October 2013 - 01:56

Допилил до того момента когда слайдер подчиняется инупутам и двигается согласно значениям. И тут застрял.
Из инпутов не передаются значения для фильтрации(

<?php

$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(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);
    });
   
});');

  • 0

#8 SmetDenis

SmetDenis

Отправлено 21 October 2013 - 07:56

Фильтрация будет проходить на основе данных из поля
<input type="hidden" id="' . $idtag . '-value" name="' . $name . '" />
Его нужно изменять примерно так
$("#' . $idtag . '-value").val(ui.values[0] + "/" + ui.values[1]);
Т.е value="min/max"
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



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


#9 Ichimaru

Ichimaru

Отправлено 21 October 2013 - 11:40

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

<input type="hidden" id="' . $idtag . '-value" name="' . $name . '" />
Его нужно изменять примерно так
$("#' . $idtag . '-value").val(ui.values[0] + "/" + ui.values[1]);
Т.е value="min/max"

 

 

нет, так к сожалению не получается(


  • 0

#10 SmetDenis

SmetDenis

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

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



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





Click to return to top of page in style!