Ползунок (Range) jquery UI
Не могу никак разобраться с одной задачей..
Есть ползунок: --- min: "1 000" max: "200 000" step "500" if value > "50 000" step "5 000" --- ![]() Проблема в том что "50 000" должно находиться по средине шкалы. И еще не могу понять почему когда я условиями изменяю шаг, после "50 000" у меня идет "56 000" а после уже добавляется по "5 000"...
<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/themes/smoothness/jquery-ui.css">
</head>
<body>
<div class="slider-range range-uah"></div>
<div class="result-block"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js"></script>
<script>
$(function() {
$( ".range-uah" ).slider({
range: "min",
value: 20000,
step: 500,
min: 1000,
max: 200000,
slide: function( event, ui ) {
var res = ui.value;
if (res >= 50000) {
$( ".range-uah" ).slider({step: 5000});
$( ".result-block" ).html(res);
} else {
$( ".range-uah" ).slider({step: 500});
$( ".result-block" ).html(res);
}
}
});
$( ".result-block" ).html($( ".range-uah" ).slider( "value" ));
});
</script>
</body>
</html>
Дайте совет, что нужно сделать и как логически это продумать... |
только костыли на ум приходят)
|
Грубо говоря.., естественно, надо допилить..
|
Эх.. Спасибо конечно, но все равно не понимаю как эти 150 000 поместить в половину полоски...) Голову ломаю над этим)))
|
Slider UI на два диапазона
hfts_rider,
Вариант на 98% :) :write:
<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/themes/smoothness/jquery-ui.css">
<style type="text/css">
.range-uah { margin: 10px;width : 500px; height: 8px ;
background-image: -webkit-gradient(linear, left, right, color-stop(0, #FFD700), color-stop(1, #FF4500));
background-image: -o-linear-gradient(left, #FFD700, #FF4500);
background-image: -moz-linear-gradient(left, #FFD700, #FF4500);
background-image: -webkit-linear-gradient(left, #FFD700, #FF4500);
background-image: linear-gradient(to right, #FFD700, #FF4500)
}
.ui-widget-header {
background-image: -webkit-gradient(linear, left, right, color-stop(0, #FF1493), color-stop(1, #0060BF));
background-image: -o-linear-gradient(left, #FF1493, #0060BF);
background-image: -moz-linear-gradient(left, #FF1493, #0060BF);
background-image: -webkit-linear-gradient(left, #FF1493, #0060BF);
background-image: linear-gradient(to right, #FF1493, #0060BF)
}
.ui-slider-handle{border-radius:50%; position: relative; font-size: 14px; display: block; }
.ui-slider-horizontal .ui-slider-handle{top:-0.4em; background: #0000FF; }
:focus {
outline: 0; /* Firefox выделяет рамкой из точек все ссылки при нажатии */
border: 0;
}
</style>
</head>
<body>
<div class="slider-range range-uah"></div>
<div class="result-block"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js"></script>
<script>
$(function() {
var len = 98 *30;
$( ".range-uah" ).slider({
range: "min",
value: 0,
step: 30,
min: 0,
max: len * 2,
slide: function( event, ui ) {
var res = ui.value;
if (res < len) {
$( ".range-uah" ).slider({step: 30});
$( ".result-block" ).html(1000 + 500*Math.floor(res/30));
} else {
$( ".range-uah" ).slider({step: 98});
$( ".result-block" ).html(50000 + 5000*Math.floor((res-len)/98));
}
},
change: function( event, ui ) {
var res = ui.value;
if (res < len) {
$( ".range-uah" ).slider({step: 30});
$( ".result-block" ).html(1000 + 500*Math.floor(res/30));
} else {
$( ".range-uah" ).slider({step: 98});
$( ".result-block" ).html(50000 + 5000*Math.floor((res-len)/98));
}
}
});
$( ".range-uah" ).slider("option", "value" , len);
});
</script>
</body>
</html>
|
Рони, спасибо!
Ты просто гуру математики хДДД |
А можешь подробней объяснить эту формулу?
Если мне допустим понадобится для других диапазонов... |
hfts_rider,
(50000 - 1000 ) / 500 = 98 (200000 -50000)/ 5000 = 30 диапазоны равны ищем ближайшее число делимое на 98 и 30 это и есть половина диапазона - всё это основное (проще сделать, чем коментрировать) |
Цитата:
И последний вопрос))) Для чего было использовано событие "change"? |
Цитата:
только наличие этого параметра позволяет програмно устанавливать значение слайдера. |
| Часовой пояс GMT +3, время: 02:45. |