JQuery UI DatePicker change подсвечивает дату "сегодня"
Я хотел бы явно изменить выделенную сегодня дату в jQuery Datepicker. Я пробовал установить дату по умолчанию, но все же выделенная дата - это дата моего локального компьютера, которая сегодня.
Я хотел бы сделать это, потому что я использую пользовательский часовой пояс. В основном текущий год/месяц/дата в этом пользовательском часовом поясе отличается от текущей текущей даты локального компьютера.
Eg.
Скажем, сегодня дата 07/10/2014 такая же, как и дата моего компьютера, но с использованием пользовательского часового пояса сегодняшняя дата должна быть 07/09/2014:
![enter image description here]()
Ответы
Ответ 1
К сожалению, "Today" рассчитан на этапе HTMLRendering DatePicker, это означает, что для "переопределения" вам нужно переопределить метод _generateHTML
$.datepicker
. Ive также обнаружил, что кнопка "Сегодня" в нем по умолчанию отключена этим переопределением, поэтому также необходимо переопределить этот метод.
В основном datepicker устанавливает внутреннюю переменную, подобную этой "tempDate = new Date()", а затем использует ее для создания "сегодня". Все, что мы делаем, это переопределить эту переменную с помощью некоторого кода коррекции временного интервала, а остальные сами сортируются.
В приведенном ниже примере вверху находится переменная для appLocalTimezone
, установите ее в желаемый часовой пояс, и она обновит datepicker на основе приложения. Весь кредит за оригинальный код/ответы в скрипте
jsFiddle Demo
Ответ 2
Небольшая настройка для @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
.
Переопределить $.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()
/* ... */
}
Здесь демонстрация, которая показывает полный код и использование: http://jsfiddle.net/NAzz7/5/
Ответ 3
используйте $( ".selector" ).datepicker({defaultDate: -1});