Чтобы отключить дату и показать подсказку, используйте параметр beforeShowDay.
beforeShowDay: function (date) {
var formattedDate = $.datepicker.formatDate('mm/dd/yy', date),
checkDisable = disabledDates.indexOf(formattedDate) == -1;
if(checkDisable == true){
return [checkDisable];
}else{
//add ui-datepicker-unselectable class to the disabled date.
return [!checkDisable,'ui-datepicker-unselectable',holidays_dates[formattedDate]];
}
}
и настройте CSS для отключенной даты
function changeDisableDateColor(){
var unselectableDate = $('.ui-datepicker-unselectable a');
unselectableDate.css({
background: 'red',
cursor: 'context-menu',
border: 0
});
}
, позвоните по вышеуказанномуфункция т.е. changeDisableDateColor при нажатии поля даты.$('#datepicker').click(function() {
changeDisableDateColor();
});
, а также внутри onChangeMonthYear (обнаруживает изменение в месяце или году) опция
onChangeMonthYear: function(){
setTimeout(function(){
changeDisableDateColor();
});
}
setTimeout используется, поскольку пользовательский интерфейс jquery удаляет все элементы даты и добавляет их снова, поэтому мыподожди, пока у нас не будет правильного свидания.Без setTimeout var unselectableDate = $('.ui-datepicker-unselectable a');
выдаст предыдущую дату.
Вот jsfiddle: http://jsfiddle.net/Xx4GS/1225/
Надеюсь, я ответил на вопрос.
Отредактировано:
Была ошибка, когда день или месяц состояли из одной цифры, то есть 1-9, тогда дата не совпадает и не будет отключена.
if(month.toString().length == 1){
month = '0'+month.toString();
}
if(day.toString().length == 1){
day = '0'+ day.toString();
}
Исправлена ошибка, добавляя 0 перед днем и месяцем.
Вот решенная скрипка js: http://jsfiddle.net/Lf5p3hct/2/