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;
}
然而,這不是,如果你非常有幫助使用動態主題,或者如果你的意圖是突出不同的一天(例如,「今天」是基於你的服務器時鐘而不是客戶端)。
另一種方法是覆蓋負責突出顯示當天的日期選擇器原型。
假設您正在使用UI 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() ? '' : '') + [...]
如果你的目標是要改變的 「今天」 日期選擇器的定義:
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
你當然也可以注入一個字符串,函數或任何適合你需要的東西。
你的代碼是正確的,你可以添加一些更多的細節? – Keeper 2010-09-30 08:45:24
你有什麼問題?你的代碼工作正常。 [在這裏看到](http://jsfiddle.net/MNBjS/) – Reigel 2010-09-30 08:46:31