11.08.2016, 17:37
|
Новичок на форуме
|
|
Регистрация: 11.08.2016
Сообщений: 4
|
|
Есть 4 бегунка, оформил их так, но теперь не могу понять, как установить связь. Общая сумма всех 4х слайдеров не должна превышать 100 %, т.е. значения могут быть любые, больше-меньше не важно, главное чтоб в сумме всегда оставалось 100. Код сырой, там еще расчеты будут с использованием значений слайдеров.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>slider</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/south-street/jquery-ui.css">
<style>
#slider0, #slider1, #slider2, #slider3 { margin: 10px; width: 300px; }
</style>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
</head>
<script>
jQuery(function() {
$("#slider0").slider({
range: "min",
value: 50,
min: 0,
max: 100,
slide: function(event, ui) {
$('#amount0').val(ui.value).trigger("change");
}
});
$("#amount0").val($("#slider0").slider("value"));
$("#slider1").slider({
range: "min",
value: 50,
min: 0,
max: 100,
slide: function(event, ui) {
$('#amount1').val(ui.value).trigger("change");
}
});
$("#amount1").val($("#slider1").slider("value"));
$("#slider2").slider({
range: "min",
value: 50,
min: 0,
max: 100,
slide: function(event, ui) {
$('#amount2').val(ui.value).trigger("change");
}
});
$("#amount2").val($("#slider2").slider("value"));
$("#slider3").slider({
range: "min",
value: 50,
min: 0,
max: 100,
slide: function(event, ui) {
$('#amount3').val(ui.value).trigger("change");
}
});
$("#amount3").val($("#slider3").slider("value"));
});
</script>
</script>
<body>
<input id="amount0">
<div id="slider0"></div>
<input id="amount1">
<div id="slider1"></div>
<input id="amount2">
<div id="slider2"></div>
<input id="amount3">
<div id="slider3"></div>
</body>
|
|
11.08.2016, 18:52
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,112
|
|
slider jquery-ui 4 обратнозависимых ползунка
Клавер,
код применим для любого количества ползунков и общей суммы.
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.slider{
width: 300px;
margin: 10px;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/south-street/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<script>
$(function() {
var arr = [25, 25, 25, 25],
k = 0;
$(".opt").each(function(i, el) {
var d = arr[i],
am = $(".amount", el),
sl = $(".slider", el);
sl.slider({
min: 0,
max: 100,
step: 1,
slide: function(event, ui) {
am.val(ui.value);
var n = arr[i] - ui.value;
arr[i] = +ui.value;
for (var a = Math.abs(n); a; k = ++k % arr.length) {
if (k != i && arr[k] < 100 && n > 0) {
arr[k] += 1;
a--
}
if (k != i && arr[k] > 0 && n < 0) {
arr[k] -= 1;
a--
}
}
arr.forEach(function(d, j) {
if (j != i) $(".slider").eq(j).slider("option", "value", d)
})
},
change: function(event, ui) {
am.val(ui.value)
}
});
sl.slider("option", "value", d)
})
});
</script>
</head>
<body>
<div class="opt">
<div class="slider"></div>
<input type="text" class="amount" readonly>
</div>
<div class="opt">
<div class="slider"></div>
<input type="text" class="amount" readonly>
</div>
<div class="opt">
<div class="slider"></div>
<input type="text" class="amount" readonly>
</div>
<div class="opt">
<div class="slider"></div>
<input type="text" class="amount" readonly>
</div>
</body>
</html>
Последний раз редактировалось рони, 11.08.2016 в 18:55.
|
|
12.08.2016, 15:33
|
Новичок на форуме
|
|
Регистрация: 11.08.2016
Сообщений: 4
|
|
Спасибо, очень помогли
|
|
26.02.2018, 14:22
|
Новичок на форуме
|
|
Регистрация: 20.09.2017
Сообщений: 6
|
|
рони, помоги.
хочу использовать Ion.RangeSlider, но может есть что то более подходящее ко мне.
есть три слайдера с диапазонами(двумя ползунками):
1. 30, 40, 50, 60, 70, 80, 90, 100
2. 1, 2, 3, 4
3. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
как сделать зависимости? например:
если выбран диапазон в первом слайдере с 30 по 60, то во втором автоматически выбирается диапазон с 1 по 2. А если выбрать во втором значения с 2 по 3, то в первом измениться на с 40 по 90.
|
|
26.02.2018, 15:35
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,112
|
|
makcim_tol,
не понимаю логики
|
|
27.02.2018, 00:43
|
Новичок на форуме
|
|
Регистрация: 20.09.2017
Сообщений: 6
|
|
Есть параметры квартиры: площадь(1), кол-во комнат(2), этаж(3).
Т.е. если выбрать площадь от 30 до 60, то это могут быть либо однокомнатные либо двухкомнатные.
Ну а если выбрать например кол-во комнат с 2 по 4, то площадь соответственно уже будет от 50 до 100.
А если выбрать только кол-во комнат 3. то площадь выберется от 60 до 90.
Надеюсь понятнее объяснил.
|
|
27.02.2018, 00:49
|
Новичок на форуме
|
|
Регистрация: 20.09.2017
Сообщений: 6
|
|
Если выбрано кол-во комнат 3 и площадь квартир от 60 до 90, то ни что не должно мешать пользователю изменить площадь на от 80 до 90.
Но если пользователь изменить например на от 80 до 100, то и кол-во комнат измениться на с 3 по 4.
|
|
27.02.2018, 01:58
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,112
|
|
makcim_tol,
не предсталяю как это можно сделать, не могу помочь.
|
|
27.02.2018, 13:05
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
а что if уже отменили?
|
|
27.02.2018, 13:17
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,112
|
|
j0hnik,
|
|
|
|