2014-07-10 7 views
1

Я хотел бы явно изменить выделенную сегодняшнюю дату в jQuery Datepicker. Я попытался установить дату по умолчанию, но все же подсвеченная дата - это дата моего локального компьютера, которая сегодня.jQuery UI DatePicker change выделен «сегодня» date

Я хотел бы сделать это, потому что я использую пользовательский часовой пояс. В основном текущий год/месяц/дата в этом пользовательском часовом поясе отличается от текущей даты моего локального компьютера.

Например.

Say текущая дата 07/10/2014 же с датой моего компьютера, но с помощью настраиваемого часового пояса, сегодняшняя дата должна быть выделена 07/09/2014:

enter image description here

+0

возможно дубликат (http://stackoverflow.com/questions/2516199/jquery-datepicker-change-today-date) –

+0

Также дубликат http://stackoverflow.com/questions/15005263/how-to-change-default-highlighted-date -в-DatePicker? –

ответ

1

К сожалению, «Сегодня» вычисляется на этапе HTMLRendering в DatePicker, это означает, что для того, чтобы ставиться вам нужно переопределить _generateHTML метод $.datepicker. Ive также обнаружил, что кнопка «Сегодня» в ее состоянии по умолчанию нарушена этим переопределением, поэтому необходимо переопределить этот метод.

В основном датапикер устанавливает внутреннюю переменную, подобную этой «tempDate = new Date()», а затем использует ее для создания «сегодня». Все, что мы делаем, - это переопределить эту переменную с помощью некоторого кода коррекции временного интервала, а остальные - сами по себе.

В приведенном ниже демо, в верхней части находится переменная для appLocalTimezone, установите ее в желаемый часовой пояс, и она обновит дату на основе приложения. Все кредиты для первоначального кода/ответы в скрипку

jsFiddle Demo

+0

. У меня болят глаза, увидев переопределение _generateHTML. Это работает, хотя я принимаю этот ответ, если нет действительно лучшего способа. Благодаря! – superigno

+0

@gino да, как я сказал, его несчастливо, что его рассчитано ВО ВРЕМЯ стадии рендеринга :( – haxxxton

-1

использования $ (".selector") .datepicker ({defaultDate: -1});

+0

это просто изменяет, какая дата автоматически выбирается при открытии datepicker (из документов: «Установите дату, чтобы выделить при первом открытии, если поле пустое.»). OP спрашивает, как переопределить, какая дата установлена ​​как «Сегодня». – haxxxton

0

небольшой настройки на @ haxxxton это, что позволяет передавать в localToday в качестве опции в DatePicker.

// Get users 'today' date 
var localToday = new Date(); 
localToday.setDate(tomorrow.getDate()+1); // tomorrow 

// Pass the today date to datepicker 
$("#datepicker").datepicker({ 
    showButtonPanel: true, 
    localToday: localToday // This option determines the highlighted today date 
}); 

Я переопределен 2 метод Datepicker условно использовать новую установку для «сегодня» даты вместо new Date(). Новая настройка называется localToday.

Override $.datepicker._gotoToday и $.datepicker._generateHTML так:

$.datepicker._gotoToday = function(id) { 
    /* ... */ 
    var date = inst.settings.localToday || new Date() 
    /* ... */ 
} 

$.datepicker._generateHTML = function(inst) { 
    /* ... */ 
    tempDate = inst.settings.localToday || new Date() 
    /* ... */ 
} 

Вот demo, который показывает полный код и использование: [? JQuery Datepicker - изменение "сегодня" дата] http://jsfiddle.net/NAzz7/5/

Смежные вопросы