Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   ползунок type="range и добавление значение в (https://javascript.ru/forum/events/56816-polzunok-type%3D-range-i-dobavlenie-znachenie-v.html)

wildil 05.07.2015 14:06

ползунок type="range и добавление значение в
 
Доброго времени суток! столкнулся с проблемой, имеются к примеру продукция с категориями, по ней идет фильтрация по категориям без перезагрузки страницы! хочу добавить ползунок для фильтрации по году... скрипт фильтрации выполняется
<li class="filter-item" data-filter=".2015">2015</li>


проблема в следующем, не могу поменять значение
Код:

data-filter=".2015"
если в строчке скрипта
Код:

document.querySelector("#volume").value = vol;
делаю замену value на data-filter, ничего не меняется!


<input type=range min=2005 max=2015 value=2015 id=fader step=1 onchange="outputUpdate(value)">
<li id=volume class="filter-item" data-filter=".2015">2015</li>
<script> function outputUpdate(vol) {
document.querySelector("#volume").value = vol;
}
</script>';


Увы с программированием не заладилось, надеюсь на вашу помощь! Заранее спасибо!

рони 05.07.2015 14:19

wildil,
document.querySelector(".filter-item").dataset.filter= "."+vol;
document.querySelector(".filter-item").innerHTML = vol;

https://learn.javascript.ru/attribut...трибуты

wildil 05.07.2015 14:28

Благодарю! Знания сила!:)

wildil 05.07.2015 18:50

возникает вопрос о возможности фильтра выбора с 2ух сторон, мол с 2006 по 2010 год...
я так понял нужно использовать jquery Ui slider.
Правда в голове не укладывается, как сделать расчет
<li id=volume class="filter-item" data-filter="">2006-2010</li>

чтобы в data-filter="" поместить .2006, .2006, .2008, .2009, .2010

Если сможете помочь соображениями на этот счет, буду благодарен!

рони 05.07.2015 18:57

wildil,
выбор за вами можно один jquery Ui slider, можно два type=range;

рони 05.07.2015 19:21

type range выбор диапазона лет
 
wildil,
<!DOCTYPE HTML>

<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
</head>

<body>
    <p>.2015</p>
    <input type=range min=2005 max=2015 value=2015 id=fader step=1 onchange="outputUpdate()">
    <input type=range min=2005 max=2015 value=2015 id=fader step=1 onchange="outputUpdate()">
    <li id=volume class="filter-item" data-filter=".2015">2015</li>
    <script>
        var p = document.querySelector("p")

        function outputUpdate(vol) {
            var str = [],
                inp = document.querySelectorAll("[type='range']");
            min = inp[0].value, max = inp[1].value;
            if (min > max) {
                inp[1].value = min;
                max = min
            };
            for (var i = min; i <= max; i++) {
                str.push(i)
            }
            p.innerHTML = "." + str.join(",.");
            document.querySelector(".filter-item").dataset.filter = "." + str.join(",.");
            document.querySelector(".filter-item").innerHTML = min + ((min == max) ? "" : (" - " + max));

        }
    </script>



</body>

</html>

Deff 05.07.2015 19:37

Всё таки с ... по удобнее двумя выпадающим меню (select)
Посколь скриптом мон генерить(обрезать) все года младше или равного году 'с'

wildil 05.07.2015 19:44

хочется все же фильтр, интуитивно и современно)
http://jqueryui.com/slider/#range
разбираюсь сейчас этим вариантом!
Цитата:

рони
респектую! правда вариант с 2умя палзунками не удобен получается... если поможете с jquery ui с меня шоколадка!)

рони 05.07.2015 19:48

wildil,
по вашей ссылке готовый код -- как получить дата -- возьмите из моего кода.

рони 05.07.2015 20:08

jqueryui slider диапазон лет
 
wildil,
<!doctype html>

<html lang="en">

<head>

  <meta charset="utf-8">

  <title>jQuery UI Slider - Range slider</title>

  <link rel="stylesheet" href="http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
  <style type="text/css">
  #slider-range{
    margin:20px;
    width:500px;
    height:5px;
  }

  .ui-slider-handle{
    border-radius:50%;
    position:relative;
    font-size:14px;
    display:block;
  }

  .ui-slider-horizontal .ui-slider-handle{
    top:0.5em;
    background:transparent;
    border-radius:0%;
    width:0;
    height:0;
    border-top:none;
    text-decoration:none;
    border-left:7px solid transparent;
    border-right:7px solid transparent;
    border-bottom:14px solid red;
  }

  .ui-slider-handle:focus{
    outline:0;

  }

  .ui-slider-horizontal .ui-slider-handle:last-of-type{
    background:transparent;
    border-bottom:none;
    border-top:14px solid red;
    top:-1.2em;
  }

  </style>
  <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
  <script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
  <script>
$(function() {
    $("#slider-range").slider({
        range: true,
        min: 2005,
        max: 2015,
        values: [2005, 2015],
        slide: function(event, ui) {
            var min = ui.values[0],
                max = ui.values[1],
                str = [];
            for (var i = min; i <= max; i++) str.push(i);
            str = "." + str.join(",.");
            $("#volume").html(min + (min == max ? "" : " - " + max)).data({
                "filter": str
            });
            $("p").html(str) //для контроля
        }
    });
    $("#volume").html($("#slider-range").slider("values", 0) + " - " + $("#slider-range").slider("values", 1))
});

  </script>

</head>

<body>
<p>.2015</p>
<li id=volume class="filter-item" data-filter=".2015">2015</li>
<div id="slider-range"></div>
</body>

</html>


Часовой пояс GMT +3, время: 20:37.