jQuery UI Datepicker закодирован, чтобы всегда выделять локальную дату пользователя, используя класс ui-state-highlight
. Нет встроенной опции, чтобы изменить это.
Один метод, описанный аналогично в других ответах на связанные вопросы, состоит в переопределении CSS для этого класса, чтобы он соответствовал ui-state-default
вашей темы, например:
.ui-state-highlight {
border: 1px solid #d3d3d3;
background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;
color: #555555;
}
Однако это не очень полезно, если вы используете динамические темы или если вы хотите выделить другой день (например, чтобы «сегодня» было основано на часах вашего сервера, а не на клиентских часах).
Альтернативный подход - переопределить прототип средства выбора даты, который отвечает за выделение текущего дня.
Предполагая, что вы используете свернутую версию JavaScript пользовательского интерфейса, следующие фрагменты могут решить эти проблемы.
Если ваша цель состоит в том, чтобы вообще не выделять текущий день:
// copy existing _generateHTML method
var _generateHTML = jQuery.datepicker.constructor.prototype._generateHTML;
// remove the string "ui-state-highlight"
_generateHtml.toString().replace(' ui-state-highlight', '');
// and replace the prototype method
eval('jQuery.datepicker.constructor.prototype._generateHTML = ' + _generateHTML);
Это изменяет соответствующий код (не минимизированный для удобства чтения) с:
[...](printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') + [...]
до
[...](printDate.getTime() == today.getTime() ? '' : '') + [...]
Если ваша цель состоит в том, чтобы изменить определение datepicker «сегодня»:
var useMyDateNotYours = '07/28/2014';
// copy existing _generateHTML method
var _generateHTML = jQuery.datepicker.constructor.prototype._generateHTML;
// set "today" to your own Date()-compatible date
_generateHTML.toString().replace('new Date,', 'new Date(useMyDateNotYours),');
// and replace the prototype method
eval('jQuery.datepicker.constructor.prototype._generateHTML = ' + _generateHTML);
Это изменяет соответствующий код (не минимизированный для удобства чтения) с:
[...]var today = new Date();[...]
до
[...]var today = new Date(useMyDateNotYours);[...]
// Note that in the minimized version, the line above take the form `L=new Date,`
// (part of a list of variable declarations, and Date is instantiated without parenthesis)
Вместо useMyDateNotYours
вы, конечно, также можете вместо этого ввести строку, функцию или что-то еще, что вам подходит.