jQuery UI Datepicker – Disabilita giorni specifici

C’è un modo (facile) per impostare jQuery UI Datepicker per disabilitare la selezione di giorni specifici e predeterminati?

Sono stato in grado di ottenere questo approccio di lavoro, tuttavia, produce un errore nullo che impedisce la visualizzazione in IE.

‘natDays […]. 0’ è null o non è un object

Grazie in anticipo!

AGGIORNAMENTO: Potrebbe aiutare se ho incluso del codice, giusto? Comunque, la maggior parte di questo è stata presa direttamente dal thread di cui sopra:

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', }); }); 

Grazie ancora!

Hai provato a dichiarare natDays correttamente con la parola chiave ‘var’ in primo piano?

Inoltre, hai una virgola extra alla fine della tua definizione natDays.

natDays [i] [2] non funzionerà in quanto gli array hanno solo 2 elementi in essi – prova solo ”

Inoltre, ti consigliamo di impostare correttamente il nome della funzione beforeShowDay – non sembra che stia chiamando la tua funzione personalizzata

Ecco un modo per disabilitare date specifiche dalla selezione:

 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 }); 

Fonte: jQuery - Datepicker - Disabilita date specifiche

È ansible utilizzare l’opzione beforeShowDay . Avevo bisogno di disabilitare qualsiasi giorno dopo il 28 del mese. Ecco il mio codice.

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

Ecco ulteriori informazioni a riguardo: http://api.jqueryui.com/datepicker/#option-beforeShowDay

La variabile data passata nel callback beforeShowDay è un object data JavaScript, quindi può essere formattata utilizzando varie librerie, un timestamp può essere recuperato utilizzando date.getTime (), ecc.

 beforeShowDay: $.datepicker.noWeekends, 

sarà

 beforeShowDay: noWeekendsOrHolidays, 

Il problema con IE è molto probabilmente nella seguente riga:

 altField: '#alternate', }); 

Prova a rimuovere il simbolo della virgola e dovrebbe funzionare.

  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 }); 

Demo dal vivo: http://jsfiddle.net/vfod0krm/