jQuery UI Datepicker jest zakodowany, aby zawsze podświetlać lokalną datę użytkownika przy użyciu klasy ui-state-highlight
. Nie ma wbudowanej opcji, aby to zmienić.
Jedną z metod, podobnie opisane w innych odpowiedzi na pytania związane jest przesłonić CSS dla tej klasy, aby dopasować ui-state-default
swojego tematu, na przykład:
.ui-state-highlight {
border: 1px solid #d3d3d3;
background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;
color: #555555;
}
Jednak nie jest to bardzo pomocne, jeśli używają dynamicznych motywów lub jeśli chcesz podkreślić inny dzień (np. "dziś" opierać się na zegarze serwera, a nie na kliencie).
Alternatywnym podejściem jest zastąpienie prototypu danych, który jest odpowiedzialny za podświetlanie bieżącego dnia.
Zakładając, że używasz zminimalizowanej wersji javascriptu UI, poniższe fragmenty mogą rozwiązać te problemy.
Jeśli twoim celem jest zapobieganie podkreślając aktualny dzień łącznie:
// 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);
To zmienia odpowiedni kod (unminimized dla czytelności) od:
[...](printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') + [...]
do
[...](printDate.getTime() == today.getTime() ? '' : '') + [...]
Jeśli twoim celem jest, aby zmienić definicję datepicker jest z "Today":
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);
To zmienia odpowiedni kod (unminimized dla czytelności) od:
[...]var today = new Date();[...]
do
[...]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)
Zamiast useMyDateNotYours
można oczywiście również wstrzyknąć ciąg, funkcję lub cokolwiek, co odpowiada twoim potrzebom.
Twój kod jest prawidłowy, można dodać trochę więcej szczegółów? – Keeper
jaki jest twój problem? Twój kod działa poprawnie. [patrz tutaj] (http://jsfiddle.net/MNBjS/) – Reigel