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:59
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 10.10.2012
Сообщений: 153

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

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

$(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) );

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

этот вариант хорош, когда ползунки не меняются программно....а в моем случае есть ряд функций, которые изменяют положение ползунков...поэтому я и использую change (((((
Ответить с цитированием
  #7 (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 ) );
			  }
	  
	}
Ответить с цитированием
  #8 (permalink)  
Старый 02.12.2013, 12:38
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 10.10.2012
Сообщений: 153

оооо!!! ui.handle - это то что я искала !!! Вот за это спасибо!!! Помогли!!!!

А теперь про бред)))) сама еле в голове держу как там и все завязано))) смотрите: после того как пользователь поменял ползунки, я сохранила их в куках - один кук для левого, один кук для правого, все это нужно для того, если пользователь уйдет со страницы а потом вернется - чтобы выбранные им значения остались! так вот пользователь вернулся, запускается ready-функция, и в момент
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";
			 [B] $( "#slider-range_his" ).slider( "values", 0,$.cookie("his_year_start_Cookie"));[/B]
			  $( "#startYear_his" ).val( $( "#slider-range_his" ).slider( "values", 0 ) );
			  }

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

$( "#slider-range_his" ).slider( "values", 0,$.cookie("his_year_start_Cookie"));
эта строчка в случае если значение куки не null

И, кстати, делаю вывод ui.handle в функции change выводит url страницы...а не индекс ползунка.....

Последний раз редактировалось Sveta, 02.12.2013 в 12:55.
Ответить с цитированием
  #10 (permalink)  
Старый 02.12.2013, 13:10
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 10.10.2012
Сообщений: 153

ох...his...oper...что если я вам признаюсь что у меня еще ползунки есть?)) все сделаны по одному и тому же принципу.....это же не суть....суть в том что мне нужно использовать именно change и в том что при выводи ui.handler не зависимо правая или левая рукоятка изменила свое положение - выводится url страницы, а следовательно, понять какая из рукояток была передвинута - нельзя. (((((
Извините, если я иногда коряво выражаюсь, я стараюсь! В принципе, проблему я решила, как я и говорила, с помощью переменной-флага....но если вдруг вы знаете как отличить событие вызванное разными рукоятками - это было бы замечательно, если такое вообще возможно.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скрипт работает только в 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