Довольно часто попадается ситуация организовать на стороне клиента (пользователя) функционал позволяющий вводить в поле при редактировании данных , параметры в формате отображения даты. Плагин 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
$(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;
}
Включение подсветки текущего дня
$(function()
{
$('.date-pick').datePicker().val(new Date().asString()).trigger('change');
});
Вставка с подсветкой предыдущего выбора
$(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;
}
Вставка с ограничением диапазона дат для выбора

$(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)
{
//--здесь то что срабатывает при выборе даты
}
);
});
$(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);
});
Показ при нажатии на текстовое поле

$(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);
}
);
});
Тэги: datePicker, jQuery



