jQuery date picker plug-in выбираем дату

jquery_datePicker

Довольно часто попадается ситуация организовать на стороне клиента (пользователя) функционал позволяющий вводить в поле при редактировании данных , параметры в формате отображения даты. Плагин datePicker для jQuery отлично помогает в такой ситуации.

Что потребуется?

Разумеется подключаем jQuery

дополнительно подключаем

<!-- библиотеку для работы с датой -->
<script type="text/javascript" src="scripts/date.js">
</script>

Фикс прелестей IE 


<!--[if IE]>
<script type="text/javascript" 
src="scripts/jquery.bgiframe.js"></script>
<![endif]-->
и сам плагин

<!-- jquery.datePicker.js -->
<script type="text/javascript" 
src="scripts/jquery.datePicker.min-2.1.2.js">
</script>

также нужно прикрутить

------------------

table.jCalendar {
border: 1px solid #000;
background: #aaa;
border-collapse: separate;
border-spacing: 2px;
}
table.jCalendar th {
background: #333;
color: #fff;
font-weight: bold;
padding: 3px 5px;
}

table.jCalendar td {
background: #ccc;
color: #000;
padding: 3px 5px;
text-align: center;
}
table.jCalendar td.other-month {
background: #ddd;
color: #aaa;
}
table.jCalendar td.today {
background: #666;
color: #fff;
}
table.jCalendar td.selected {
background: #f66;
color: #fff;
}
table.jCalendar td.selected.dp-hover {
background: #f33;
color: #fff;
}
table.jCalendar td.dp-hover,
table.jCalendar tr.activeWeekHover td {
background: #fff;
color: #000;
}
table.jCalendar tr.selectedWeek td {
background: #f66;
color: #fff;
}
table.jCalendar td.disabled, table.jCalendar td.disabled.dp-hover {
background: #bbb;
color: #888;
}
table.jCalendar td.unselectable,
table.jCalendar td.unselectable:hover,
table.jCalendar td.unselectable.dp-hover {
background: #bbb;
color: #888;
}

/* For the popup */

/* NOTE - you will probably want to style a.dp-choose-date - see how I did it in demo.css */

div.dp-popup {
position: relative;
background: #ccc;
font-size: 10px;
font-family: arial, sans-serif;
padding: 2px;
width: 171px;
line-height: 1.2em;
}
div#dp-popup {
position: absolute;
z-index: 199;
}
div.dp-popup h2 {
font-size: 12px;
text-align: center;
margin: 2px 0;
padding: 0;
}
a#dp-close {
font-size: 11px;
padding: 4px 0;
text-align: center;
display: block;
}
a#dp-close:hover {
text-decoration: underline;
}
div.dp-popup a {
color: #000;
text-decoration: none;
padding: 3px 2px 0;
}
div.dp-popup div.dp-nav-prev {
position: absolute;
top: 2px;
left: 4px;
width: 100px;
}
div.dp-popup div.dp-nav-prev a {
float: left;
}
/* Opera needs the rules to be this specific otherwise it doesn't change the cursor back to pointer after you have disabled and re-enabled a link */
div.dp-popup div.dp-nav-prev a, div.dp-popup div.dp-nav-next a {
cursor: pointer;
}
div.dp-popup div.dp-nav-prev a.disabled, div.dp-popup div.dp-nav-next a.disabled {
cursor: default;
}
div.dp-popup div.dp-nav-next {
position: absolute;
top: 2px;
right: 4px;
width: 100px;
}
div.dp-popup div.dp-nav-next a {
float: right;
}
div.dp-popup a.disabled {
cursor: default;
color: #aaa;
}
div.dp-popup td {
cursor: pointer;
}
div.dp-popup td.disabled {
cursor: default;
}

------------------------------

для datePicker

Что и как ?


Простая ставка datePicker

jquery_datePicker_sample-1

$(function()
{
	$('.date-pick').datePicker();
});

Для иконки календаря дополнительно добавим css код

a.dp-choose-date {
	float: left;
	width: 16px;
	height: 16px;
	padding: 0;
	margin: 5px 3px 0;
	display: block;
	text-indent: -2000px;
	overflow: hidden;
	background: url(calendar.png) no-repeat;
}
a.dp-choose-date.dp-disabled {
	background-position: 0 -20px;
	cursor: default;
}
/* makes the input field shorter once the date picker code
 * has run (to allow space for the calendar icon
 */
input.dp-applied {
	width: 140px;
	float: left;
}

Включение подсветки текущего дня

jquery_datePicker_sample-2

$(function()
{
	$('.date-pick').datePicker().val(new Date().asString()).trigger('change');
});

Вставка с подсветкой предыдущего выбора

jquery_datePicker_sample-3

$(function()
{
	$('.date-pick').datePicker({startDate:'01/01/1996'});
});

и добавим код css

a.dp-choose-date {
	float: left;
	width: 16px;
	height: 16px;
	padding: 0;
	margin: 5px 3px 0;
	display: block;
	text-indent: -2000px;
	overflow: hidden;
	background: url(calendar.png) no-repeat;
}
a.dp-choose-date.dp-disabled {
	background-position: 0 -20px;
	cursor: default;
}
/* makes the input field shorter once the date picker code
 * has run (to allow space for the calendar icon
 */
input.dp-applied {
	width: 140px;
	float: left;
}

Вставка с ограничением диапазона дат для выбора
jquery_datePicker_sample-4

$(function()
{
	$('.date-pick').datePicker(
		{
			startDate: '01/01/1970',
			endDate: (new Date()).asString()
		}
	);
});

Инлайновая вставка

$(function()
{
	$('.turn-me-into-datepicker')
		.datePicker({inline:true})
		.bind(
			'dateSelected',
			function(e, selectedDate, $td)
			{
				//--здесь то что срабатывает при выборе даты
			}
		);
});

Выборка сразу целой недели
jquery_datePicker_sample-5

$(function()
{
	$('.date-pick').datePicker({selectWeek:true,closeOnSelect:false});
});

Задать фиксированную позицию

$(function()
{
	$('.date-pick')
		.datePicker({createButton:false})
		.bind('click',
			function()
			{
				$(this).dpDisplay();
				this.blur();
				return false;
			}
		);
	// tl is the default so don't bother setting it's position
	$('#tr').dpSetPosition($.dpConst.POS_TOP, $.dpConst.POS_RIGHT);
	$('#bl').dpSetPosition($.dpConst.POS_BOTTOM, $.dpConst.POS_LEFT);
	$('#br').dpSetPosition($.dpConst.POS_BOTTOM, $.dpConst.POS_RIGHT);
	$('#custom-offset').dpSetOffset(10, 300);
});

Показ при нажатии на текстовое поле
jquery_datePicker_sample-6

$(function()
{
	$('.date-pick').datePicker({clickInput:true})
});

Задать свой формат временной метки

Date.firstDayOfWeek = 0;
Date.format = 'mm/dd/yyyy';
$(function()
{
	$('.date-pick').datePicker()
});

Локализация , языковые настройки datePicker

$.dpText = {
	TEXT_PREV_YEAR		:	'DE Previous year',
	TEXT_PREV_MONTH		:	'DE Previous month',
	TEXT_NEXT_YEAR		:	'DE Next year',
	TEXT_NEXT_MONTH		:	'DE Next month',
	TEXT_CLOSE			:	'DE Close',
	TEXT_CHOOSE_DATE	:	'DE Choose date'
}
$(function()
{
	$('.date-pick').datePicker()
});

Блокировка поля ввода datePicker

$(function()
{
	$('.date-pick').datePicker();
	$('.dp-disable').bind(
		'click',
		function()
		{
			var $this = $(this);
			var whichInput = $this.attr('rel');
			var $dateInput = $('#date' + whichInput);
			var status = $dateInput.is('.dp-disabled');
			$dateInput.dpSetDisabled(!status);
			$this.text(
				(status ?
					'Disable' :
					'Enable'
				) + ' date ' + whichInput);
			this.blur();
			return false;
		}
	);
});

Обработчик событий

$(function()
{
	$('.date-pick')
		.datePicker({createButton:false})
		.bind(
			'click',
			function()
			{
				$(this).dpDisplay();
				this.blur();
				return false;
			}
		)
		.bind(
			'dateSelected',
			function(e, selectedDate, $td)
			{
				console.log('You selected ' + selectedDate);
			}
		);
});

Post to Twitter Tweet This Post

Тэги: ,

  • jQuery выбираем цвет
  • jQuery SELECT (jquery-asmselect)
  • Как определить длительность дня средствами PHP (function date_sunrise date_sunset date_sun_info)
  • Wordpress подключение JQuery
  • jQuery png Fix
  • jQuery ajax в IE7
  • jQuery cookie проще некуда
  • Prototype и jQuery используем одновременно
  • jQuery watermark input field
  • jQuery округлые углы
  • jQuery древовидное меню
  • jQuery ajax рейтинг
  • Оставить комментарий