Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Проблема с ползунком!!! (https://javascript.ru/forum/jquery/43168-problema-s-polzunkom.html)

Sveta 25.11.2013 11:20

Проблема с ползунком!!!
 
Здравствуйте! Подскажите, пожалуйста! Столкнулась с такой проблемой:
Использую на страничках виджет джиквери полузунок. Чаще всего для выбора диапазона значений
$("#slider-diap").slider({
		  range: true,
		  min: 2000,
		  max: 2010,
		  values: [2010, 2010],
		  slide: function( event, ui ) {
			$( "#startYear" ).val( ui.values[ 0 ] );
			$( "#endYear" ).val(  ui.values[ 1 ] );
		  }
		});

По умолчаню, два ползунка стоят на одном и том же значении,причем на краю диапазона, это важно.
И здесь возникает проблема!
Итак: горизонтальный слайдер, два ползунка : левый и правый, диапазон лет, соответственно от левого до правого. Понятное дело, что я не могу задвинуть правый левее левого))) ну то есть если левый показывает 2005, то правый не может показать 2004.
Так вот когда загружается страничка - два ползунка находятся в конце диапазона на 2010, и получается что мышка выделяет правый ползунок, и я не могу его воообще сдвинут влево, так как левый стоит на 2010. А мне нужно чтобы мышка выделила левый ползунок, и я могла изменить диапазон.
Надеюсь, я понятно объяснила проблему! Подскажите пожалуйста, как мне программно задавать какой ползунок сверху при загрузке страницы? от чего это вообще зависит?

рони 25.11.2013 11:43

Цитата:

Сообщение от Sveta
получается что мышка выделяет правый ползунок, и я не могу его воообще сдвинут влево

странная мышка :-?
<!doctype html>

<html lang="en">

<head>

  <meta charset="utf-8">
  <title>slider demo</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/mint-choc/jquery-ui.css">
  <style>
  #slider-diap { margin: 10px;width : 500px; }
   	</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>

<body>
<div id="slider-diap"></div>
<input id="startYear" value="2010"><input id="endYear" value="2010">
<script>
$("#slider-diap").slider({
		  range: true,
		  min: 2000,
		  max: 2010,
		  values: [2010, 2010],
		  slide: function( event, ui ) {
			$( "#startYear" ).val( ui.values[ 0 ] );
			$( "#endYear" ).val(  ui.values[ 1 ] );
		  }
		});

</script>
</body>
</html>

Sveta 25.11.2013 11:49

)))) Я упростила немного. При изначальной загрузке страницы у меня тоже все работает, но!!! мне приходится использовать куки для сохранения выбранных пользователем значений. И теперь представим что пользователь выбрал обоими ползунками 2010 год. после перезагрузки страницы на ползунки устанавливаются значения из куков. Так вот в этом случае и происходит эта ошибка. Причем если я оба ползунка установлю на 2000 - то все работает - активен правый ползунок, а вот если на 2010 то тоже активен правый ползунок - вот и получается что его просто не сдвинуть!!!! от чего вообще зависит активность ползунка? как можно ее изменить??(((

Sveta 25.11.2013 11:59

Получилось!!! Уж сколько я над этим думала! )))) но тут задумалась: походу дела активность ползунка зависит от того, какой мы последним двигали!! во поэтому решила отследить момент когда оба ползунка находятся на 2010 и установить значение на левый ползунок повторно - тогда он получается последним, над которым производят действие - следовательно он активен! Может кому пригодится ;)
if($.cookie("oper_year_end_Cookie")=="2010" && $.cookie("oper_year_start_Cookie")=="2010" )$( "#slider-diap" ).slider( "values", 0,$.cookie("oper_year_start_Cookie"));

рони 25.11.2013 12:29

slider ui сохранение
 
Sveta,
:-?
<!doctype html>

<html lang="en">

<head>

  <meta charset="utf-8">
  <title>slider demo</title>
  <link rel="stylesheet" href="https://code.jquery.com/ui/1.10.3/themes/mint-choc/jquery-ui.css">
  <style>
  #slider-diap { margin: 10px;width : 500px; }
   	</style>
  <script src="https://code.jquery.com/jquery-1.9.1.js"></script>
  <script src="https://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

</head>

<body>
<div id="slider-diap"></div>
<input id="startYear" value="2010"><input id="endYear" value="2010">
<script>
var storage = localStorage;
var a = JSON.parse(storage.getItem("values")) ||[2010, 2010];
$("#slider-diap").slider({
		  range: true,
		  min: 2000,
		  max: 2010,
		  values: a,
		  slide: function( event, ui ) {
		    storage.setItem("values", JSON.stringify(ui.values));
			$( "#startYear" ).val( ui.values[ 0 ] );
			$( "#endYear" ).val(  ui.values[ 1 ] );
		  }
		});
$( "#startYear" ).val( a[ 0 ] );
$( "#endYear" ).val(  a[ 1 ] );
</script>
</body>
</html>

Sveta 26.11.2013 12:10

рони,
Вы предлагаете использовать localStorage вместо куков? в чем преимущество?

рони 26.11.2013 12:20

Sveta,
вам предложили не localStorage а решение по проблеме правого ползунка - использовать localStorage или cookie в моём коде вам решать - а так обьём для хранения в localStorage гораздо больше cookie

Sveta 26.11.2013 12:35

аааа) Спасибо!)


Часовой пояс GMT +3, время: 14:40.