Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   datepicker 29 февраля (https://javascript.ru/forum/jquery/43199-datepicker-29-fevralya.html)

Sveta 26.11.2013 11:34

datepicker 29 февраля
 
Здравствуйте, подскажите пожалуйста, как установить календарю желаемый год?
Проблема вот в чем, есть календарь, в котором мы выбираем только число и месяц. Год мы не выбираем!!!!
Отдельно, в другом месте, определяется год, он не связан с календарем. И вот тут проблема, мне нужно чтобы в случае если год високосный - в календаре было 29 февраля, если нет - то нет. Год я могу передать через переменную, но я на нашла в стандартных свойствах свойства установки года....подскажите пожалуйста.

рони 26.11.2013 11:47

Sveta,
диапазон лет года одинаковые сделайте
$("selector").datepicker({ yearRange:'2013:2013' });

можно и выбор запретить всё равно в выборе всего один год будет
changeYear: false

Sveta 26.11.2013 11:54

jquery ui datapicker....я думала у джиквери только один календарь..
код стандартный, обычный календарь без выбора года
$.datepicker.regional['ru'] = {
					closeText: 'Закрыть',
					prevText: '<Пред',
					nextText: 'След>',
					currentText: 'Сегодня',
					monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',
					'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
					monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
					'Июл','Авг','Сен','Окт','Ноя','Дек'],
					dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
					dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
					dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
					weekHeader: 'Не',
					dateFormat: 'yy-mm-dd',
					firstDay: 1,
					isRTL: false,
					showMonthAfterYear: false
				};
					$.datepicker.setDefaults($.datepicker.regional['ru']);

var default_options = {
				//changeYear: true,
				timeOnlyTitle: 'Выберите время',
				timeText: 'Время',
				hourText: 'Часы',
				minuteText: 'Минуты',
				secondText: 'Секунды',
				currentText: 'Сейчас',
				closeText: 'Принять',
				changeMonth: true,
				changeYear: false,
				numberOfMonths: 1,
				firstDay: 1,
				showButtonPanel: true,
				dateFormat: "mm-dd",
				
			};
			
			var extended_options_from = $.extend({
			defaultDate: date_from,
	        hour: 00,
	        minute: 00
			}, default_options);

на нем еще таймпикер для выбора часов и минут.....
суть в том как мне заставить его меняться - есть 29 фефраля и нет 29 февраля...может у него свойство особое какое есть...

Sveta 26.11.2013 11:55

причем динамически меняться....

Sveta 04.12.2013 11:18

рони,
Цитата:

диапазон лет года одинаковые сделайте
$("selector").datepicker({ yearRange:'2013:2013' });
Сделала...и что это дает?

рони 04.12.2013 11:32

Sveta,
а что не так то? установив календарю необходимый год вы автоматом получаите нужные дни в месяцах.

Sveta 04.12.2013 11:53

возможно так он и должен работать, но у меня не работает(( что-то не так:
я сделала как вы сказали, yearRange:'2012:2012' даже changeYear: сделала true , чтобы год видеть, календарь показывает 2012 год (он был вискокосный) но 29 февраля нет!!! когда я сделала yearRange:'2012:2015' то при выборе 2012 года 29 февраля появляется...но по умолчанию календарь на 2013 году....а так как мне в итоге выбор года нужно скрыть и динамически менять.......

рони 04.12.2013 12:18

Цитата:

Сообщение от Sveta
показывает 2012 год (он был вискокосный) но 29 февраля нет!!!

Цитата:

ну шо вы такое говорите ?
<!doctype html>



<html lang="en">

<head>

  <meta charset="utf-8" />

  <title>jQuery UI Datepicker - Default functionality</title>

  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/sunny/jquery-ui.css" />

  <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>

  <link rel="stylesheet" href="/resources/demos/style.css" />
   <style type="text/css">
   <!--
   body{
     font-size: 12px;
   }

   -->
   </style>
  <script>      

  $(function() {
    var x = new Date(2012,1,29);
    $.datepicker.regional['ru'] = {
		closeText: 'Закрыть',
		prevText: '&#x3c;Пред',
		nextText: 'След&#x3e;',
		currentText: 'Сегодня',
		monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь', 'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
		monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн', 'Июл','Авг','Сен','Окт','Ноя','Дек'],
		dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
		dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
		dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
		dateFormat: 'dd.mm.yy',
		firstDay: 1,
		isRTL: false,
		showOtherMonths:true,
		selectOtherMonths:true,
		changeMonth:true,
		minDate : '01.01.2012',
		maxDate : '31.12.2012',
 defaultDate: x,
        yearRange :   "2012:2012",
        changeYear: false,
        showAnim:"scale"
};
$.datepicker.setDefaults($.datepicker.regional['ru'])
$( '#datepicker' ).datepicker();
  });
  </script>
</head>
<body>
<p>Date: <input type="text" id="datepicker" /></p>
</body>
</html>

рони 04.12.2013 12:23

Sveta,
minDate : '01.01.2012',
maxDate : '31.12.2012', без установки диапазона лет так надёжнее

Sveta 04.12.2013 13:40

хмм....я не могу задать минимальную и максимальную дату..дело в том что при загрузке у меня установлена дата по умолчанию - первое число текущего месяца, год я не указываю, так как у меня формат даты "mm-dd"...но высчитывается дата по умолчанию через текущую дату:
var maxDate=new Date();
var maxMonth=maxDate.getMonth()+1;
   if(maxMonth<10){maxMonth='0'+maxMonth;}

а потом я делаю так:
var date_from=maxMonth+"-01 00:00";

ну и в календарь все это
defaultDate:date_from ,

рони 04.12.2013 13:48

Sveta,
попробуйте сформулировать свою задачу иначе -- как связаны текущая дата, високосный год, возможность установки даты но невозможность установки диапазона - бермудский треугольник.

Sveta 04.12.2013 13:55

так, все по порядку)
Задача такая - получить дату - год, число, день, часы, минуты.
Дату выбирает пользователь.
Диапазон лет - очень большой, поэтому было решено для удобства пользователя год выбирать с помощью ползунка, в отдельном поле.
А месяц и число с помощью календаря.
По умолчанию выбрана дата - первое число текущего месяца.
Вот и вся задача)))

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

И у меня есть календарь, в котором по умолчанию стоит первое число текущего месяца, и пользователь выбирает любой месяц и любое число.
И там, в календаре, сейчас, 29 февраля нет. А мне нужно: чтобы в зависимости от выбранного года в отдельном поле - календарь менялся - с 29 февраля и без 29 февраля. И кстати менялся сам календарь, ведь допустим в этом году 1 января было во вторник, а в следующем будет в среду.....то есть нужно задавать - календарь какого года должен быть.

рони 04.12.2013 14:16

Sveta,
вариант невозможности выбрать несуществующую дату
http://javascript.ru/forum/dom-windo...tml#post263897

P.S. логику того что вы описали выше увы осилить несмог

Sveta 04.12.2013 14:31

) ну хорошо, забудем все, подскажите, пожалуйста, допустим я хочу разместить на страничке календарь jquery за 2000 год. Чтобы пользователь мог выбрать любой день в 2000 году.
Как это сделать?

рони 04.12.2013 14:33

Sveta,
я вам показал как это сделать в 9 посте

Sveta 04.12.2013 15:02

я просто не могу понять, почему мой календарь показывает 2013 год!
var maxDate=new Date();
		var maxMonth=maxDate.getMonth()+1;
			if(maxMonth<10){maxMonth='0'+maxMonth;}

			var default_options = {
				timeOnlyTitle: 'Выберите время',
				timeText: 'Время',
				hourText: 'Часы',
				minuteText: 'Минуты',
				secondText: 'Секунды',
				currentText: 'Сейчас',
				closeText: 'Принять',
			
				changeMonth: true,
				changeYear: false,
				numberOfMonths: 1,
				firstDay: 1,
				showButtonPanel: true,
				dateFormat: "mm-dd"
			};
	
	//установка календаря
		if(document.getElementById('from')!=null) {
			var date_from=maxMonth+"-01 00:00";
			
			if ($.cookie('cookie_date_from') == null) $.cookie('cookie_date_from', date_from);
			var extended_options_from = $.extend({
				defaultDate: $.cookie('cookie_date_from') ,
			 yearRange:'2012:2012',
				hour: 00,
				minute: 00,
				onSelect:function(dateText, inst) { 
					$.cookie("cookie_date_from", dateText);
				}
			}, default_options);
			$('#from').val( $.cookie('cookie_date_from'));
			$("#from").datetimepicker(extended_options_from);
		}

я добавляю yearRange: '2012:2012', все как вы написали(((((
так почему он показывает мне 2013?

рони 04.12.2013 15:03

Sveta,
ответ в 10 посте

Sveta 04.12.2013 15:12

ахахахахахахахахахаха)))) Я сейчас заплачу!!!!!! Он показал 2019 год!!!! ОТКУДА????
yearRange:'2012:2012',
minDate : '01.01.2012',
maxDate : '31.12.2012',


Ладно, я так понимаю что-то непонятное портит мой код в календаре...2019 я уж точно не знаю откуда может взяться......В общем сейчас буду экспериментировать в отдельном чистом файле, без постороннего скрипта....

Sveta 04.12.2013 15:36

Мистика.
Подскажите, пожалуйста, если кто-нибудь знает!
Необходим простой календарь jquery ui datepicker за 2012 год.
Создала отдельную страницу:
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  	<link type="text/css" rel="stylesheet"             href="./css/jquery-ui-1.10.2.custom.css" /> <!--стиль элементов jQuery-->
	<link type="text/css" href="./css/ui.dropdownchecklist.themeroller.css" rel="stylesheet" /><!--стиль элементов jQuery-->

	<script type="text/javascript" src="./js/jquery.js"></script>
	<script type="text/javascript" src="./js/jquery.cookie.js"></script>
	<script type="text/javascript" src="./js/jquery-ui-1.10.2.custom.js"></script>
	<script type="text/javascript" src="./js/jquery-ui-timepicker-addon.js"></script>
  <style>
    body{font:normal 9pt Arial,sans-serif;}
  </style>
</head>
<body>
  <p>Дата: <input type="text" id="datepicker"></p>

  <script>
    $("#datepicker").datepicker({yearRange:'2012:2012',minDate : '01.01.2012',maxDate : '31.12.2012' });
	
  </script>
</body>
</html>


Календарь показывает 2019 год...запускала и в FF и в Google Chrome, меняла библиотеку jquery...а год все равно 2019..кто-нибудь понимает почему так? и что сделать чтобы получить календарь за 2012 год?

рони 04.12.2013 15:49

обьект нужен для дат -- строка воспринимается как сдвиг относительно сегодняшней даты
$("#datepicker").datepicker({minDate : new Date(2012,0,1),maxDate  : new Date(2012,11,31),
firstDay: 1

Sveta 04.12.2013 16:13

это то что нужно, спасибо!))


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