Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.11.2013, 10:07
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 10.10.2012
Сообщений: 153

jquery.cookie один работает - другой нет
Здравствуйте!
Не понимаю что происходит!
Хочу сохранять значения ползунков с помощью jquery.cookie
при установке ползунка пишу
$("#slider-range_oper").slider({
		  range: true,
		  min: maxYear-1,
		  max: maxYear,
		  values: [maxYear, maxYear],
		  slide: function( event, ui ) {
			$( "#startYear_oper" ).val( ui.values[ 0 ] );
			$( "#endYear_oper" ).val(  ui.values[ 1 ] );
		  },
		  change: function( event,ui){
			$.cookie("oper_year_start_Cookie", ui.values[ 0 ]);//при изменении положения ползунков сохраняю в куки
			$.cookie("oper_year_end_Cookie", ui.values[ 1 ]);//при изменении положения ползунков сохраняю в куки
		  }
		});
		$( "#startYear_oper" ).val( $( "#slider-range_oper" ).slider( "values", 0 ) );				
		$( "#endYear_oper" ).val(  $( "#slider-range_oper" ).slider( "values", 1 ) );

а вот и само создание куков
var cookie_oper_year_start = $.cookie("oper_year_start_Cookie");

if(cookie_oper_year_start == null)
{
 var cookie_value = $( "#slider-range_oper" ).slider( "values", 0 );
  $.cookie("oper_year_start_Cookie", cookie_value);
  cookie_oper_year_start = $.cookie("oper_year_start_Cookie");
}
else{
  $( "#slider-range_oper" ).slider( "values", 0,$.cookie("oper_year_start_Cookie"));
  $( "#startYear_oper" ).val( $( "#slider-range_oper" ).slider( "values", 0 ) );
  }
  
  //***************************************
  
 var cookie_oper_year_end = $.cookie("oper_year_end_Cookie");

if(cookie_oper_year_end == null)
{
 var cookie_value1 = $( "#slider-range_oper" ).slider( "values", 1 );
  $.cookie("oper_year_end_Cookie", cookie_value1);
  cookie_oper_year_end = $.cookie("oper_year_end_Cookie");
}
else{
  $( "#slider-range_oper" ).slider( "values", 1,$.cookie("oper_year_end_Cookie"));
  $( "#endYear_oper" ).val( $( "#slider-range_oper" ).slider( "values", 1 ) );
  }


Все это в функции ready
Так вот: работает только первый кук, а если я первый удаляю - то второй начинает работать...в чем дело?
Ответить с цитированием
  #2 (permalink)  
Старый 29.11.2013, 11:54
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

А maxYear у вас чему равна? и почему values: [maxYear, maxYear] ?
Ответить с цитированием
  #3 (permalink)  
Старый 29.11.2013, 11:59
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 10.10.2012
Сообщений: 153

maxYear глобальная переменная, равна 2013, а в values: [maxYear, maxYear] я задаю что по умолчанию оба ползунка слайдера стоят на максимальном значении) Но это не суть, такой же код я применяю для другого слайдера с ползунками, на котором по умолчанию стоит values: [-90, 90] и та же история - первый ползунок работает, а второй нет (точнее работают оба ползунка, но во запминается положение только первого...а второй при перезагрузке страницы снова на значение по умолчанию становится)....словно от порядка объявления зависит.....
Ответить с цитированием
  #4 (permalink)  
Старый 29.11.2013, 12:06
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 10.10.2012
Сообщений: 153

Я кажется разобралась) все дело в вызове
change: function( event,ui){
				$.cookie("oper_year_start_Cookie", ui.values[ 0 ]);
				$.cookie("oper_year_end_Cookie", ui.values[ 1 ]);
			  }

при перезагрузке страницы она вызывается дважды, и когда она вызывается первый раз - то переписывает значение второго кука))) значит остается только как-то отличать события при вызове этой функции cange
Ответить с цитированием
  #5 (permalink)  
Старый 29.11.2013, 12:07
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Но у вас получается min: 2012 max: 2013, в чем смысл такого ползунка что вы хотите то получить в итоге?
Ответить с цитированием
  #6 (permalink)  
Старый 29.11.2013, 12:16
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 10.10.2012
Сообщений: 153

Хмм...вы правы...изначально диапазон был большой, 1950 - 2013 и он используется чаще всего для него мне тоже нужно делать куки...но на отдельных страницах нужен лишь за два года....не знаю переделывать ли его, смотрится красиво) тем более удобно что одна страница похожа на другую, просто у одной будет маленький диапазон а у другой - большой)
Я вот теперь ломаю голову как отличать вызвана ли change функция одним или другим ползунком...?
Ответить с цитированием
  #7 (permalink)  
Старый 29.11.2013, 13:08
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

$(document)ready(function() {

	var maxYear = 2013;
	var minYear = maxYear - 10;

	if ($.cookie('oper_year_start_Cookie') == null) $.cookie('oper_year_start_Cookie', maxYear);
	if ($.cookie('oper_year_end_Cookie') == null) $.cookie('oper_year_end_Cookie', maxYear);

	$('#slider-range_oper').slider({
		range: true,
		min: minYear,
		max: maxYear,
		values: [$.cookie('oper_year_start_Cookie'), $.cookie('oper_year_end_Cookie')],
		slide: function(event, ui) {
			$('#startYear_oper').val(ui.values[0]);
			$('#endYear_oper').val(ui.values[1]);
			$.cookie('oper_year_start_Cookie', ui.values[0]);
			$.cookie('oper_year_end_Cookie', ui.values[1]);
		}
	});
	
	$('#startYear_oper').val( $('#slider-range_oper').slider('values', 0) );
	$('#endYear_oper').val( $('#slider-range_oper').slider('values', 1) );

});
Ответить с цитированием
  #8 (permalink)  
Старый 02.12.2013, 11:47
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 10.10.2012
Сообщений: 153

этот вариант хорош, когда ползунки не меняются программно....а в моем случае есть ряд функций, которые изменяют положение ползунков...поэтому я и использую change (((((
Ответить с цитированием
  #9 (permalink)  
Старый 02.12.2013, 12:18
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 10.10.2012
Сообщений: 153

Дело обстоит так: если я буду использовать изменение значения куков при событии slide то мне придется отдельно прописывать изменение куков в каждой функции где значение слайдера меняется программно. Здесь проблема: таких функций несколько, скрипт с ними находится в другом файле... возможно это и будет работать если довести до ума...но у меня не работало, значения портились в null...в общем, я решила что более простым и удобным решением будет использование change
как я поняла, понять какой их двух ползунков вызвал change нельзя( поэтому мне пришлось завсети переменную-флаг, которая запрещает изменение значения куков в случае если изменение положение слайдера вызвано при перезагрузке страницы...вообще говоря это правильно, хотя решение на мой взгляд не красивое(((
var flagChangeData1="1"; // флаг, указывающий, менять ли значение в coockie при вызове chahge
	if(document.getElementById('slider-range_his')!=null){
			$("#slider-range_his").slider({
			  range: true,
			  min: 1981,
			  max: maxYear,
			  values: [maxYear, maxYear],
			  slide: function( event, ui ) {
				$( "#startYear_his" ).val( ui.values[ 0 ] );
				$( "#endYear_his" ).val(  ui.values[ 1 ] );
			  },
			  change: function( event,ui){
				if(flagChangeData1=="1"){
					$.cookie("his_year_start_Cookie", ui.values[ 0 ]);
					$.cookie("his_year_end_Cookie", ui.values[ 1 ]);
				}
				flagChangeData1="1";
			  }
			});
			$( "#startYear_his" ).val( $( "#slider-range_his" ).slider( "values", 0 ) );	
			$( "#endYear_his" ).val(  $( "#slider-range_his" ).slider( "values", 1 ) );	

			//*******************start year**************************
			//$.cookie('his_year_start_Cookie', 'cookie_value');
			var his_year_start_Cookie = $.cookie("his_year_start_Cookie");
			if(his_year_start_Cookie  == null  )
			{
			 var cookie_value = $( "#slider-range_his" ).slider( "values", 0 );
			  $.cookie("his_year_start_Cookie", cookie_value);
			  his_year_start_Cookie = $.cookie("his_year_start_Cookie");
			}
			else{
				flagChangeData1="0";
			  $( "#slider-range_his" ).slider( "values", 0,$.cookie("his_year_start_Cookie"));
			  $( "#startYear_his" ).val( $( "#slider-range_his" ).slider( "values", 0 ) );
			  }
			  
			  //********************end year*******************
			 var his_year_end_Cookie = $.cookie("his_year_end_Cookie");

			if(his_year_end_Cookie  == null)
			{
			 var cookie_value1 = $( "#slider-range_his" ).slider( "values", 1 );
			  $.cookie("his_year_end_Cookie", cookie_value1);
			  his_year_end_Cookie = $.cookie("his_year_end_Cookie");
			}
			else{
				flagChangeData1="0";
			  $( "#slider-range_his" ).slider( "values", 1,$.cookie("his_year_end_Cookie"));
			  if($.cookie("his_year_end_Cookie")==maxYear && $.cookie("his_year_start_Cookie")==maxYear )$( "#slider-range_his" ).slider( "values", 0,$.cookie("his_year_start_Cookie"));
			  $( "#endYear_his" ).val( $( "#slider-range_his" ).slider( "values", 1 ) );
			  }
	  
	}
Ответить с цитированием
  #10 (permalink)  
Старый 02.12.2013, 12:31
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от Sveta Посмотреть сообщение
как я поняла, понять какой их двух ползунков вызвал change нельзя
можно, ui.handle это и есть ползунок, который вызвал change
Сообщение от Sveta Посмотреть сообщение
если изменение положение слайдера вызвано при перезагрузке страницы
бред какой-то...
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скрипт работает только в IE, а в остальных браузерах нет. melodicman Firefox/Mozilla 0 23.06.2010 15:18
ява-скрипт выборочно работает-не работает zeta777 Internet Explorer 0 20.01.2010 11:41
Две одинаковые страницы: на одной скрипты видны, на другой нет Маня Общие вопросы Javascript 9 03.06.2009 11:57
JS меню работает на обычной html странице, а на юкозовском движке нет. adware Я не знаю javascript 10 16.05.2009 16:48
Сторонние библиотеки - быть или не быть? IIIEPJIOK Оффтопик 64 21.03.2009 19:39