Algo así:
Código Javascript
:
Ver original//acá obtengo las fechas por DB
var o_fechas_disponibles = [{"id":"1","fecha":"2012-06-14","descripcion":"ddddddddddddddd"},
{"id":"2","fecha":"2012-06-14","descripcion":"rrrrrrrrrrrrr"},
{"id":"3","fecha":"2012-06-15","descripcion":"mmmm msdf mmmmmm"}];
//convierto este objeto en array de fechas, sólo por conveniencia
//esto debe hacerse fuera de la función callback y de preferencia al comienzo de todo
//de esta forma hacemos este ciclo sólo una vez.
var ar_fechas_disponibles = new Array();
$.map(o_fechas_disponibles,function(n,i){
ar_fechas_disponibles[i] = n.fecha;
});
$(function(){
$("#datepicker").datepicker({
beforeShowDay: function(date) {
//obtengo la fecha que me provee datepicker y la pongo en EL MISMO formato
//que las fechas que yo tengo, para poder comparar.
_fecha = date.getFullYear() + '-' + ("0" + (date.getMonth()+1)).slice(-2) + '-' +("0" + date.getDate()).slice(-2);
//verifico que la fecha obtuve esté en el arreglo.
//Si no está, devuelvo false y un texto para mostrar como tooltip en la fecha
if ($.inArray(_fecha, ar_fechas_disponibles)==-1) {
return [false,"","No disponible"];
} else {
return [true, ""];
}
}
})
});
Ejemplo completo funcionando:
http://jsfiddle.net/9RMsV/
Si te fijás en el ejemplo, sólo podés elegir entre el 14 y 15 de Junio. Tal y cómo querrías.
También fijate que en el ejemplo de objeto que pasaste, tenés el primer elemento así "fecha" mientras que los otros dos son " fecha " (con espacios). Estimo que si ese objeto lo generás automáticamente, eso no debería suceder. Probablemente sólo lo escribiste mal :P