JQuery datepicker - изменить "сегодняшнюю" дату?

Есть ли способ изменить "сегодняшнюю" дату в jquery.ui datepicker? Сегодня я имею в виду сегодня (class= "ui-datepicker-today" ), а не minDate или текущую дату!

Я понял, что datepicker использует системное время для значений по умолчанию. Теперь я получаю текущую дату с моего сервера и устанавливаю ее в мой minDate. Но я не нашел способ установить сегодняшнюю дату... Он по-прежнему использует мою системную дату (есть некоторые пользователи, чья системная дата находится в 2000 году или ранее).

Может ли помочь мне PLZ?

Ответ 1

На основе source он выглядит не очень хорошо.

var today = new Date();

Это всегда будет дата системы пользователя.

Если вы абсолютно должны это исправить, посмотрите вниз по строке; вы можете переопределить $.datepicker._daylightSavingAdjust и вернуть дату со своего сервера *

Но это плохая идея. Почему у ваших пользователей системная дата так запутана? Почему это ваша проблема? Если они жалуются, скажите им исправить свои часы.

* Я не могу подчеркнуть, насколько это плохо. Эта функция используется для нормализации большинства дат в datepicker, поэтому вам придется написать некоторую довольно запутанную логику, чтобы не испортить все. Это может быть даже невозможно.

Ответ 2

Небольшое исправление выбранного ответа в jQuery UI DatePicker change подсвечивается "сегодня" дата

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

Переопределить $.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, который показывает полный код и использование: http://jsfiddle.net/NAzz7/5/

Ответ 3

Вы хотите установить дату по умолчанию, когда открывается jQuery UI Datepicker?

Если да, то датпикер имеет option, чтобы вы могли установить это.