Elaborando la respuesta de Rob Van Dam, aquí hay un ejemplo de código (usando jQuery UI datepicker) para obtener fechas habilitadas usando AJAX. Uso AJAX para consultar una página de PHP que devuelve la fecha habilitada de una base de datos (porque solo quiero mostrar las fechas en las que tengo datos reales).
La idea es hacer la consulta AJAX cada vez que el usuario cambie el mes y luego almacenar las fechas habilitadas para este mes en una matriz global (allowedDates) que luego usa BeforeShowDay.
Por supuesto, podría hacer la consulta AJAX en beforeShowDay, pero esto sería bastante ineficaz debido a la gran cantidad de consultas AJAX (más de 30 por cada mes).
var allowedDates = new Object();
function queryAllowedDates (year, month, id) {
$.ajax({
type: 'GET',
url: 'calendar_days.php',
dataType: 'json',
success: function(response) {
allowedDates[id] = response.allowedDates;
},
data: {year:year,month:month},
async: false
});
}
$("#datepicker1").datepicker({
dateFormat: 'dd.mm.yy',
changeMonth: true,
changeYear: true ,
beforeShow: function (input) {
var currentDate = $(input).datepicker('getDate');
var id = $(input).attr('id');
queryAllowedDates(currentDate.getFullYear(), currentDate.getMonth()+1,id);
},
onChangeMonthYear: function (year, month, inst) {
queryAllowedDates(year, month, inst.input.attr('id'));
},
beforeShowDay: function (day) {
var id = $(this).attr('id');
var date_str = [
day.getFullYear(),
day.getMonth() + 1,
day.getDate()
].join('-');
if (allowedDates[id] != undefined && allowedDates[id][date_str]) {
return [true, 'good_date', 'This date is selectable'];
} else {
return [false, 'bad_date', 'This date is NOT selectable'];
}
}
});
En este ejemplo, la página PHP devuelve una matriz JSON que contiene algo como:
{"allowedDates":{"2008-12-04":1,"2008-12-11":1}}
¿Qué tecnología serverside está usando? ¿Solo etiquetó el lado del cliente? Dependiendo del servidor (asp.net, etc.) hay muchos controles disponibles donde podría implementar esta funcionalidad. –
No merece una respuesta completa, pero pude hurgar en el código fuente de jQuery y editar los fines de semana para obtener un buen datepicker. – dmanexe