jQuery UI Datepicker está codificado para resaltar siempre la fecha local del usuario utilizando la clase ui-state-highlight
. No hay una opción incorporada para cambiar esto.
Un método, que se describe de manera similar en otras respuestas a preguntas relacionadas, es para anular el CSS para esa clase para que coincida con ui-state-default
de su tema, por ejemplo:
.ui-state-highlight {
border: 1px solid #d3d3d3;
background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;
color: #555555;
}
Sin embargo esto no es muy útil si están utilizando temas dinámicos, o si su intención es resaltar un día diferente (por ejemplo, tener "hoy" basado en el reloj de su servidor en lugar de en el del cliente).
Un enfoque alternativo es anular el prototipo de selector de fecha que es responsable de resaltar el día actual.
Suponiendo que está utilizando una versión minimizada de la IU javascript, los siguientes fragmentos pueden abordar estas inquietudes.
Si su objetivo es evitar que destacar el día de hoy por completo:
// 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);
Esto cambia el código en cuestión (unminimized para facilitar la lectura) a partir de:
[...](printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') + [...]
a
[...](printDate.getTime() == today.getTime() ? '' : '') + [...]
Si su objetivo es cambiar la definición del selector de fecha de "hoy":
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);
Esto cambia el código en cuestión (unminimized para facilitar la lectura) a partir de:
[...]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)
En lugar de useMyDateNotYours
, por supuesto, también podría inyectar una cadena, función o lo que se ajuste a sus necesidades.
Su código es correcto, se puede añadir algunos detalles más? – Keeper
¿cuál es tu problema? tu código funciona bien [verlo aquí] (http://jsfiddle.net/MNBjS/) – Reigel