jQuery UI Datepicker – Deshabilitar días específicos

¿Hay alguna manera (fácil) de configurar el jQuery UI Datepicker para que no permita la selección de días específicos y predeterminados?

Logré que este enfoque funcionara, sin embargo, produce un error nulo que impide que se muestre en IE.

‘natDays […]. 0’ es nulo o no es un objeto

¡Gracias por adelantado!

ACTUALIZACIÓN: Podría ayudar si incluí algún código, ¿verdad? De todos modos, la mayor parte de esto fue tomada directamente del hilo antes mencionado:

natDays = [ [7, 23], [7, 24], [8, 13], [8, 14], ]; function nationalDays(date) { for (i = 0; i < natDays.length; i++) { if (date.getMonth() == natDays[i][0] - 1 && date.getDate() == natDays[i][1]) { return [false, natDays[i][2] + '_day']; } } return [true, '']; } function noWeekendsOrHolidays(date) { var noWeekend = $.datepicker.noWeekends(date); if (noWeekend[0]) { return nationalDays(date); } else { return noWeekend; } } $(function() { $("#datepicker").datepicker({ inline: true, minDate: new Date(2009, 6, 6), maxDate: new Date(2009, 7, 14), numberOfMonths: 2, hideIfNoPrevNext: true, beforeShowDay: $.datepicker.noWeekends, altField: '#alternate', }); }); 

¡Gracias de nuevo!

¿Has intentado declarar natDays correctamente con la palabra clave ‘var’ al frente?

Además, tiene una coma adicional al final de su definición de NatDays.

natDays [i] [2] no funcionará ya que las matrices solo tienen 2 elementos en ellas: prueba solo ”

Además, querrá establecer su nombre de función beforeShowDay correctamente, no parece que llame siquiera a su función personalizada.

Aquí hay una forma de desactivar la selección de fechas específicas:

 var unavailableDates = ["9-5-2011","14-5-2011","15-5-2011"]; function unavailable(date) { dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear(); if ($.inArray(dmy, unavailableDates) < 0) { return [true,"","Book Now"]; } else { return [false,"","Booked Out"]; } } $('#iDate').datepicker({ beforeShowDay: unavailable }); 

Fuente: jQuery - Datepicker - Deshabilitar Fechas Específicas

Puede usar la opción beforeShowDay . Necesitaba desactivar cualquier día después del 28 del mes. Aquí está mi código.

 $('.datepicker').datepicker({ dateFormat: "yy-mm-dd", beforeShowDay: function(date) { var day = date.getDate(); if (day > 28) { return [false]; } else { return [true]; } } }); 

Aquí hay más información al respecto: http://api.jqueryui.com/datepicker/#option-beforeShowDay

La variable de fecha pasada a la callback beforeShowDay es un objeto de fecha JavaScript, por lo que se puede formatear utilizando varias bibliotecas, una marca de tiempo se puede recuperar usando date.getTime (), etc.

 beforeShowDay: $.datepicker.noWeekends, 

estarán

 beforeShowDay: noWeekendsOrHolidays, 

El problema con IE probablemente se encuentre en la siguiente línea:

 altField: '#alternate', }); 

Intenta eliminar el símbolo de coma y debería funcionar.

  var unavailableDates = ["19-8-2014","14-9-2014"]; function unavailable(date) { dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" +date.getFullYear(); if ($.inArray(dmy, unavailableDates) < 0) { return [true,"","Book Now"]; } else { return [false,"","Booked Out"]; } } $('#iDate').datepicker({ beforeShowDay: unavailable }); 

Demostración en vivo: http://jsfiddle.net/vfod0krm/