Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.04.2016, 13:39
fos fos вне форума
Аспирант
Отправить личное сообщение для fos Посмотреть профиль Найти все сообщения от fos
 
Регистрация: 26.04.2016
Сообщений: 40

Зависимость шага 2го ползунка от позиции первого
Заранее извиняюсь за криворукость - совершенно не знаю яву.. но старательно учусь

В идеале необходимо сделать так:

2 ползунка
slider -главный, slider2 - "в подчинении"

1 имеет шкалы для перемещения 30,40,50,70,80,90,100,120,150 <- задачу, по изменению линейного шага я преодолел...
2 меняет свои шкалы в зависимости от позиции 1го ползуна.. т.е.:
при текущем значении 1 = 30, шкалы у 2го = 30,40, при 1 = 40 - у второго = 30,40,60 и т.д. для разных позиций разные комбинации.

Впоследствии каждой из комбинаций присвоить значение числовое (цена) - которое будет выводиться клиенту. В общем калькулятор на ползунках с нелинейными делениями ползунка с присвоением констант к каждой из комбинаций

Пока вышла вот такая муть...
https://gist.github.com/anonymous/0e...74379b062f0648

Помогите советом - буду признателен!
Ответить с цитированием
  #2 (permalink)  
Старый 26.04.2016, 15:45
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

А зачем первый задает диапазон, с какой целью?
Ответить с цитированием
  #3 (permalink)  
Старый 26.04.2016, 15:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

slider зависимый ползунок
fos,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  body {
  font-family: sans-serif;
  font-size: 12px;
}

#amount, #amount2 {
  font-size: 22px;
  font-weight: bold;
  border:none;
  color: #ff5555;
  background: none;

}
#slider, #slider2{
   width: 300px;
}

 </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
  <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js">
</script>
  <script>
$(function() {
    var steps = [30, 40, 50, 60, 70, 80, 90, 100, 120, 150];

    function comb(a) {
        return steps.filter(function(b, i) {
            return i < a + 2 && i > a - 2
        })
    }
    var steps2 = comb(0);
    $("#slider2").slider({
        value: 0,
        min: 0,
        max: steps2.length - 1,
        step: 1,
        slide: function(event, ui) {
            $("#amount2").val(steps2[ui.value])
        },
        change: function(event, ui) {
            $("#amount2").val(steps2[ui.value])
        }
    });
    $("#slider").slider({
        value: 0,
        min: 0,
        max: steps.length - 1,
        step: 1,
        slide: function(event, ui) {
            $("#amount").val(steps[ui.value]);
            steps2 = comb(ui.value);
            $("#slider2").slider("option",
                "max", steps2.length - 1);
            $("#slider2").slider("option", "value", steps2.indexOf(steps[ui.value]))
        },
        change: function(event, ui) {
            $("#amount").val(steps[ui.value]);
            steps2 = comb(ui.value);
            $("#slider2").slider("option", "max", steps2.length - 1);
            $("#slider2").slider("option", "value", steps2.indexOf(steps[ui.value]))
        }
    });
    $("#slider").slider("option", "value", 0)
});
  </script>
</head>

<body>
    <p>
  <input type="text" id="amount" readonly>
</p>

<div id="slider"></div>

<p>
  <input type="text" id="amount2" readonly>
</p>

<div id="slider2"></div>

</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 26.04.2016, 15:58
fos fos вне форума
Аспирант
Отправить личное сообщение для fos Посмотреть профиль Найти все сообщения от fos
 
Регистрация: 26.04.2016
Сообщений: 40

Сообщение от laimas Посмотреть сообщение
А зачем первый задает диапазон, с какой целью?
C целью того, чтобы доступные комбинации сами себя в итоге не поубивали до 2-3 значений в обоих направлениях.
Ответить с цитированием
  #5 (permalink)  
Старый 26.04.2016, 16:00
fos fos вне форума
Аспирант
Отправить личное сообщение для fos Посмотреть профиль Найти все сообщения от fos
 
Регистрация: 26.04.2016
Сообщений: 40

Сообщение от рони
slider зависимый ползунок
fos,
Спасибо, ГУРУ! Еще один этап преодолен... буду дальше углубляться в допил задумки
Ответить с цитированием
  #6 (permalink)  
Старый 26.04.2016, 16:10
fos fos вне форума
Аспирант
Отправить личное сообщение для fos Посмотреть профиль Найти все сообщения от fos
 
Регистрация: 26.04.2016
Сообщений: 40

Сообщение от рони
slider зависимый ползунок
fos,
балин.. я не точно указал желаемый результат в итоге не то получилось... для определенной позиции 1го необходимо задать конкретные значения шкал для 2го и они не связаны логически.. т.е. для 30 = 30,40, для 40 = 30,40,60, для 50 = 50,70, для 60 = 40, 60, 90 и т.д... в результате каждой кобминации необходимо присвоить свое цифровое значение, которое будет выводиться в качестве ценника.. т.е. 30 + 30 = 950, 30+40 = 1095, 50+70 = 2230 и т.д...
Видимо я слишком дофига хочу Я уже подумываю над тем, чтобы не загонятся и сделать тупо кликабельное перечисление всех размером без каких либо ползунков.. но оно даже с моей фантазией не поддается красивой визуализации, возможной с ползунками...
Ответить с цитированием
  #7 (permalink)  
Старый 26.04.2016, 16:11
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от fos
C целью того, чтобы доступные комбинации сами себя в итоге не поубивали до 2-3 значений в обоих направлениях.
Что-то не осилил.

Пользователь же выбирает, например, категорию товаров, а получить мин. и макс. значения этого параметра для категории не проблема, и подставить их в диапазон.

Да в общем то и плагины диапазонов есть, где ну никак не напутать.
Ответить с цитированием
  #8 (permalink)  
Старый 26.04.2016, 16:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от fos
т.е. для 30 = 30,40, для 40 = 30,40,60, для 50 = 50,70, для 60 = 40, 60, 90
нет проблем , в коде мало что изменится. пишите обьект для всего диапазона.
Сообщение от fos
в результате каждой кобминации необходимо присвоить свое цифровое значение, которое будет выводиться в качестве ценника.. т.е. 30 + 30 = 950, 30+40 = 1095, 50+70 = 2230 и т.д...
не осилил. попытайтесь дополнить информацию.
Ответить с цитированием
  #9 (permalink)  
Старый 26.04.2016, 16:31
fos fos вне форума
Аспирант
Отправить личное сообщение для fos Посмотреть профиль Найти все сообщения от fos
 
Регистрация: 26.04.2016
Сообщений: 40

Сообщение от laimas Посмотреть сообщение
Что-то не осилил.

Пользователь же выбирает, например, категорию товаров, а получить мин. и макс. значения этого параметра для категории не проблема, и подставить их в диапазон.

Да в общем то и плагины диапазонов есть, где ну никак не напутать.
Тут я не осилил ))

Чтобы более понятно было: нужно сделать калькулятор расчета стоимости портрета. Всего около 15 различных размеров, каждый из них стоит определенную деньгу, которую не получится в формулу уместить по параметру площади и т.д., т.е. втупую нужно каждому размеру задавать отдельный ценник, а выводить 15 размеров полотенцем на экран - юзер глаза себе выколет и убежит в выпадающий список прятать - тоже коряво.. ползунки идеально, но дефолтом доступен только шаг и макс,мин =\

Плагинов несколько качал, прогуглил порядка 20 страниц скриптов со связанными ползунками, нелинейным шагом ползунка и т.д. и в итоге получилось то чудовисче, которое получилось...
Ответить с цитированием
  #10 (permalink)  
Старый 26.04.2016, 16:53
fos fos вне форума
Аспирант
Отправить личное сообщение для fos Посмотреть профиль Найти все сообщения от fos
 
Регистрация: 26.04.2016
Сообщений: 40

Сообщение от рони Посмотреть сообщение
нет проблем , в коде мало что изменится. пишите обьект для всего диапазона.
Блин, вот плох, когда и яву не знаешь и с ораторскими навыками хреново )))
Чтобы прям вот конкретно понять, что я хочу попробую на X, Y, G, Z объяснить... X - текущая шкала 1, Y - шкалы ползунка 2, G = текущее значение шкалы 2, Z = ценник, присваиваемый комбе позиций X и G.
Дабы не оставалось комбинаций с 1 значением в шкале убрал величину 150, где только 1 размер 100х150 былбы... - и хнер с ним

X = 30 -> Y = 30, 40
X = 40 -> Y = 30, 40, 60
X = 50 -> Y = 50, 70
X = 60 -> Y = 40, 60, 90
X = 70 -> Y = 50, 70, 100
X = 80 -> Y = 80, 120
X = 90 -> Y = 60, 90
X = 100 -> Y = 70, 100
X = 120 -> Y = 80, 120

X=30 & G=30 -> Z = 905,
X=30 & G=40 и X=40 & G=30 -> Z = 1095,
X=40 & G=40 -> Z = 1305,
X=40 & G=60 и X=60 & G=40 -> Z = 1730,
X=50 & G=50 -> Z = 1755,
X=50 & G=70 и X=70 & G=50 -> Z = 2230,
X=60 & G=60 -> Z = 2255,
X=60 & G=90 и X=90 & G=60 -> Z = 3045,
X=70 & G=70 -> Z = 3000,
X=70 & G=100 и X=100 & G=70 -> Z = 3670,
X=80 & G=80 -> Z = 3500,
X=80 & G=120 и X=120 & G=80 -> Z = 4655,
X=80 & G=80 -> Z = 3500,
X=90 & G=90 -> Z = 4200,
X=100 & G=100 -> Z = 4755,
X=120 & G=120 -> Z = 6305,

Сообщение от рони Посмотреть сообщение
не осилил. попытайтесь дополнить информацию.
вроде дополнил, но сомневаюсь что смог описать корректно...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск