Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.04.2015, 11:12
Аватар для hfts_rider
Профессор
Отправить личное сообщение для hfts_rider Посмотреть профиль Найти все сообщения от hfts_rider
 
Регистрация: 26.01.2014
Сообщений: 181

Ползунок (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>


Дайте совет, что нужно сделать и как логически это продумать...

Последний раз редактировалось hfts_rider, 06.04.2015 в 11:15.
Ответить с цитированием
  #2 (permalink)  
Старый 06.04.2015, 12:19
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

только костыли на ум приходят)
Ответить с цитированием
  #3 (permalink)  
Старый 06.04.2015, 12:31
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

Грубо говоря.., естественно, надо допилить..
Ответить с цитированием
  #4 (permalink)  
Старый 06.04.2015, 13:04
Аватар для hfts_rider
Профессор
Отправить личное сообщение для hfts_rider Посмотреть профиль Найти все сообщения от hfts_rider
 
Регистрация: 26.01.2014
Сообщений: 181

Эх.. Спасибо конечно, но все равно не понимаю как эти 150 000 поместить в половину полоски...) Голову ломаю над этим)))
Ответить с цитированием
  #5 (permalink)  
Старый 06.04.2015, 13:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,071

Slider UI на два диапазона
hfts_rider,
Вариант на 98%
<!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>

Последний раз редактировалось рони, 06.04.2015 в 13:53.
Ответить с цитированием
  #6 (permalink)  
Старый 06.04.2015, 14:10
Аватар для hfts_rider
Профессор
Отправить личное сообщение для hfts_rider Посмотреть профиль Найти все сообщения от hfts_rider
 
Регистрация: 26.01.2014
Сообщений: 181

Рони, спасибо!
Ты просто гуру математики хДДД
Ответить с цитированием
  #7 (permalink)  
Старый 06.04.2015, 14:14
Аватар для hfts_rider
Профессор
Отправить личное сообщение для hfts_rider Посмотреть профиль Найти все сообщения от hfts_rider
 
Регистрация: 26.01.2014
Сообщений: 181

А можешь подробней объяснить эту формулу?
Если мне допустим понадобится для других диапазонов...
Ответить с цитированием
  #8 (permalink)  
Старый 06.04.2015, 14:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,071

hfts_rider,
(50000 - 1000 ) / 500 = 98
(200000 -50000)/ 5000 = 30
диапазоны равны ищем ближайшее число делимое на 98 и 30 это и есть половина диапазона - всё это основное (проще сделать, чем коментрировать)
Ответить с цитированием
  #9 (permalink)  
Старый 06.04.2015, 14:36
Аватар для hfts_rider
Профессор
Отправить личное сообщение для hfts_rider Посмотреть профиль Найти все сообщения от hfts_rider
 
Регистрация: 26.01.2014
Сообщений: 181

Сообщение от рони Посмотреть сообщение
hfts_rider,
(50000 - 1000 ) / 500 = 98
(200000 -50000)/ 5000 = 30
диапазоны равны ищем ближайшее число делимое на 98 и 30 это и есть половина диапазона - всё это основное (проще сделать, чем коментрировать)
Огромнейшее спасибо!
И последний вопрос)))
Для чего было использовано событие "change"?
Ответить с цитированием
  #10 (permalink)  
Старый 06.04.2015, 14:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,071

Сообщение от hfts_rider
Для чего было использовано событие "change"?
для строки 71 в основном
только наличие этого параметра позволяет програмно устанавливать значение слайдера.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery UI Slider ползунок yura_yushkevich Библиотеки/Тулкиты/Фреймворки 0 26.12.2014 11:59
Нужно связать input и ползунок jQuery Slider / jQuery ui IffeR jQuery 4 16.08.2014 18:01
Ползунок JQuery: несколько событий? Veterinar jQuery 9 10.01.2014 20:57
jQuery UI Range slider как заблокировать левый ползунок по первому клику Oleg_Pupkin jQuery 3 04.09.2013 13:44
jQuery range slider Turner jQuery 0 15.03.2011 11:51