jQuery UI Datepicker è codificato per evidenziare sempre la data locale dell'utente utilizzando la classe ui-state-highlight
. Non esiste alcuna opzione integrata per cambiarlo.
Un metodo, descritto in modo simile in altre risposte alle domande relative, è quello di ignorare il CSS per quella classe per abbinare ui-state-default
del vostro tema, ad esempio:
.ui-state-highlight {
border: 1px solid #d3d3d3;
background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;
color: #555555;
}
Tuttavia questo non è molto utile se si stanno usando temi dinamici, o se il tuo intento è quello di evidenziare un giorno diverso (ad esempio, per avere "oggi" basarsi sull'orologio del tuo server piuttosto che sul client).
Un approccio alternativo consiste nell'override del prototipo DatePicker responsabile dell'evidenziazione del giorno corrente.
Supponendo che si stia utilizzando una versione ridotta del javascript dell'interfaccia utente, i seguenti frammenti possono risolvere questi problemi.
Se il vostro obiettivo è quello di prevenire mettendo in evidenza il giorno corrente del tutto:
// 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);
Questo cambia il relativo codice (unminimized per migliorare la leggibilità) da:
[...](printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') + [...]
a
[...](printDate.getTime() == today.getTime() ? '' : '') + [...]
Se il vostro obiettivo è quello di cambiare la definizione di datepicker di "oggi":
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);
Questo cambia il relativo codice (unminimized per migliorare la leggibilità) da:
[...]var today = new Date();[...]
a
[...]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)
anziché useMyDateNotYours
ovviamente potresti anche iniettare una stringa, una funzione o qualsiasi altra cosa che soddisfi le tue esigenze.
Il vostro codice è corretto, si può aggiungere qualche dettaglio in più? – Keeper
qual è il tuo problema? il tuo codice funziona bene [guardalo qui] (http://jsfiddle.net/MNBjS/) – Reigel