Просмотр полной версии : ползунок 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>';
Увы с программированием не заладилось, надеюсь на вашу помощь! Заранее спасибо!
wildil,
document.querySelector(".filter-item").dataset.filter= "."+vol;
document.querySelector(".filter-item").innerHTML = vol;
https://learn.javascript.ru/attributes-and-custom-properties#свойство-dataset-data-атрибуты
Благодарю! Знания сила!:)
возникает вопрос о возможности фильтра выбора с 2ух сторон, мол с 2006 по 2010 год...
я так понял нужно использовать jquery Ui slider.
Правда в голове не укладывается, как сделать расчет
<li id=volume class="filter-item" data-filter="">2006-2010</li>
чтобы в data-filter="" поместить .2006, .2006, .2008, .2009, .2010
Если сможете помочь соображениями на этот счет, буду благодарен!
wildil,
выбор за вами можно один jquery Ui slider, можно два 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>
Всё таки с ... по удобнее двумя выпадающим меню (select)
Посколь скриптом мон генерить(обрезать) все года младше или равного году 'с'
хочется все же фильтр, интуитивно и современно)
http://jqueryui.com/slider/#range
разбираюсь сейчас этим вариантом!
рони респектую! правда вариант с 2умя палзунками не удобен получается... если поможете с jquery ui с меня шоколадка!)
wildil,
по вашей ссылке готовый код -- как получить дата -- возьмите из моего кода.
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>
Огромное спасибо! последний вопрос, data-filter= остается неизменным, вроде тут вывод идет, я не силен как и говорил выше(
$("#volume").html(min + (min == max ? "" : " - " + max)).data({
"filter": str
});
готов символично поблагодарить на вебмани или телефон)
wildil,
сделайте так, если из data jquery пока не научились извлекать данные.
$("#volume").html(min + (min == max ? "" : " - " + max)).attr({
"data-filter": str
});
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot