jQuery disabled dates med
Hej!Jeg har et problem.
Jeg ønsker at hente nogle disabled dates in fra en ekstern PHP-fil. Det leveres selvfølgelig json_encoded og det hele virker egentligt ok. Det eneste problem er, at variablen kun sættes af den eksterne fil når man skifter måned, så når vi er i februar er datoerne i januar og marts ikke sat "onload".
Det jeg gør, er, at jeg ved månedsskift henter de alle "disabled dates" fra måneden før og efter den pågældende dato. På den måde er arrayet sat til næste månedsskift. Dette er dog ikke gjort "onLoad", hvorfor alle datoer i marts vil være tilgængelige - hvordan kan jeg sætte variablen "fra start" med de datoer, der ligger i databasen? eller findes der en måde hvorpå man gennem datepicker-funktionen kan sætte arrayet for kun den måned, man trykke hen på? Altså hvis jeg er i februar og trykker "next" så skal den kun hente de datoer, der skal disables i marts?
Her er koden jeg har brugt:
$(function(){
$(".datepicker").datepicker({
dateFormat: 'dd-mm-yy',
async:false,
onChangeMonthYear: function(year, month, thisCalendar){
$.post(
'/test.php',
{'dateYear': year, 'dateMonth': month},
function(data){
var val = []
$.each(data, function(index, completed) {
val[index] = completed;
});
disabledDates = val;
},
"json");
},
beforeShowDay: nationalDays
});
});
var disabledDates = [];
var closedDays = [[1], [2]];
/* utility functions */
function nationalDays(date) {
var day = date.getDay();
var mo = date.getMonth();
var da = date.getDate();
var ye = date.getFullYear();
var ret = [true];
for (var i = 0; i < closedDays.length; i++) {
if (day == closedDays[i][0] && date > new Date()) {
ret = [false];
}
}
for (var i = 0; i < disabledDates.length; i++)
{
if ( $.inArray( ((mo+1)+'-'+da+'-'+ye), disabledDates) != -1 && date > new Date())
{
ret = [false];
}
}
if( date < new Date() )
{
ret = [false];
}
return ret;
}
function noWeekendsOrHolidays(date) {
var noWeekend = jQuery.datepicker.noWeekends(date);
return noWeekend[0] ? nationalDays(date) : noWeekend;
}