Resalte, deshabilite días específicos en jQuery UI datepicker

Aquí, quiero lograr seguir

  1. Resalte todos los días festivos en el datepicker
  2. Desactivar días específicos en el datepicker
  3. Deshabilitar fines de semana específicos en el datepicker

Tengo fragmentos de cada uno por separado, pero quiero todos juntos

Fiddle: Demo de trabajo

Vacaciones destacadas

var holydays = ['10/17/2013', '10/18/2013', '11/2/2013']; function highlightDays(date) { for (var i = 0; i < holydays.length; i++) { if (new Date(holydays[i]).toString() == date.toString()) { return [true, 'highlight']; } } return [true, '']; } $(function () { $("#dp").datepicker({ minDate: 0, dateFormat: 'mm/dd/yy', inline: true, numberOfMonths: [1, 2], dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], beforeShowDay: highlightDays, }); }); 

Deshabilitar días específicos

 var disabledDays = ["10-20-2013", "10-21-2013", "11-15-2013", "11-17-2013"]; function disableAllTheseDays(date) { var m = date.getMonth(), d = date.getDate(), y = date.getFullYear(); for (i = 0; i < disabledDays.length; i++) { if($.inArray((m+1) + '-' + d + '-' + y,disabledDays) != -1) { return [false]; } } return [true]; } 

Deshabilitar los fines de semana

 $(function() { $( "#availability" ).datepicker({ minDate: 0, dateFormat: 'mm/dd/yy', inline: true, numberOfMonths: [1, 2], dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], beforeShowDay: $.datepicker.noWeekends }); }); 

¿Alguien podría ayudarme?

Gracias por adelantado.

cambio :

 $(function () { $("#dp").datepicker({ minDate: 0, dateFormat: 'mm/dd/yy', inline: true, numberOfMonths: [1, 2], dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], beforeShowDay: setCustomDate // <-----change function }); }); 

añadir función:

 function setCustomDate(date) { var clazz = ""; var arr1 = highlightDays(date); if (arr1[1] != "") clazz = arr1[1]; var arr2 = disableAllTheseDays(date); var arr3 = $.datepicker.noWeekends(date); return [(!arr2[0] || !arr3[0]) ? false : true, clazz]; } 

Ahora estamos en 2014, y se requiere un código mínimo. Aquí está mi manera de deshabilitar los días.

mi variable ‘específica’, 0 <= específica <= 7

 in my demo : 

1 = sunday 2 = saturday 4 = Monday to friday

 if specific == 5 that mean 4 + 1 so i allow Monday till friday + sunday. 

7 significa todos los días permitidos para recoger. Observe que solo permito elegir desde el mes hasta el mes + 1.

 $( "#datepicker" ).datepicker({ minDate:0, maxDate: '+1M-1D', dateFormat: "yy-mm-dd", beforeShowDay: function(date) { var day = date.getDay(); if(day == 6) return [(specific & 2) > 0, '']; else if(day == 0) return [(specific & 1) > 0, '']; else return [(specific & 4) > 0, '']; } }); 

Sólo para futuras referencias. Desde que estaba buscando lo mismo y encontré esta misma función para deshabilitar días en muchos lugares diferentes:

http://www.spiceforms.com/blog/how-to-disable-dates-in-jquery-datepicker-a-short-guide/ https://davidwalsh.name/jquery-datepicker-disable-days

 var disabledDays = ["10-20-2013", "10-21-2013", "11-15-2013", "11-17-2013"]; function disableAllTheseDays(date) { var m = date.getMonth(), d = date.getDate(), y = date.getFullYear(); for (i = 0; i < disabledDays.length; i++) { if($.inArray((m+1) + '-' + d + '-' + y,disabledDays) != -1) { return [false]; } } return [true]; } 

Pero como está usando inArray, no se necesita for para, lo que resulta en esta función más simple y eficiente:

 var disabledDays = ["4-2-2016", "4-4-2016"]; function disableAllTheseDays(date) { var m = date.getMonth(), d = date.getDate(), y = date.getFullYear(); if($.inArray((m+1) + '-' + d + '-' + y,disabledDays) != -1) return [false]; return [true]; } 

Esta funciona para mí. Colocada antes de cerrar la etiqueta del cuerpo.

 function DisableMonday(date) { var day = date.getDay(); if (day == 1) { return [false,"","Unavailable"] ; } else { return [true] ; } } jQuery(function($){ $('input[name="datum"]').datepicker('option', 'beforeShowDay', DisableMonday).datepicker('refresh'); });