Avatar billede cronaldo Nybegynder
21. februar 2011 - 01:35 Der er 1 løsning

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;
    }
Avatar billede cronaldo Nybegynder
22. februar 2011 - 23:42 #1
Lukker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester