Jquery Datepicker - datum uitzonderen van "nonWorkingDates"

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Johnny Cash

Johnny Cash

18/04/2014 13:40:40
Quote Anchor link
Goedemiddag,

Ik had al eerder een topic aangemaakt over de jquery datepicker.
Mijn vraag werd daar goed beantwoord met een werkende oplossing, waarvoor dank.

Echter nu heb ik een 2e vraag over diezelfde Datepicker (Jquery).

In de function nonWorkingDates geeft ik aan dat alle zondag moeten worden disabled uit de datepicker.
Dit werkt uiteraard goed!
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        function nonWorkingDates(date){
            var day = date.getDay(), Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6;
            var closedDates = [[12,25,2014],[12,26,2014],[04,21,2014]];            
            var closedDays = [[Sunday]];  
            for (var i = 0; i < closedDays.length; i++) {
                if (day == closedDays[i][0]) {
                    return [false];
                }
            }
            for (i = 0; i < closedDates.length; i++) {
                if (date.getMonth() == closedDates[i][0] - 1 && date.getDate() == closedDates[i][1] && date.getFullYear() == closedDates[i][2]) {
                    return [false];
                }
            }        
            return [true];
        }


Echter nu wil ik juist ook de mogelijkheid inbouwen dat er uitzonderingen gemaakt kunnen worden door bijvoorbeeld een koopzondag. Hoe kan ik in deze zelfde functie een controle laten uitvoeren dat wanneer een datum overeenkomt met bijvoorbeeld [04,20,2014] dat deze zondag als uitzondering wel getoond wordt?

Op internet vind ik voornamelijk veel topics over hoe je een dag uitsluit van beschikbaarheid, maar juist niet andersom.
 
PHP hulp

PHP hulp

28/03/2024 12:49:32
 
Michael -

Michael -

18/04/2014 13:50:27
Quote Anchor link
Je zou in ieder geval een array met uitzonderingen moeten hebben en hierop controleren

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
var exceptionDates = [[04,20,2014]];

if(exceptionDates.indexOf(date.getDate()) < 1)
{
    //geen uitzondering
} else {
    //wel een uitzondering
}
 
Johnny Cash

Johnny Cash

18/04/2014 13:56:46
Quote Anchor link
Hallo Michael,

Het principe wat je hebt geschreven begrijp ik, maar hoe bouw ik zoiets in binnen mijn bestaande functie?
 
Michael -

Michael -

18/04/2014 13:59:04
Quote Anchor link
>> maar hoe bouw ik zoiets in binnen mijn bestaande functie?

Dat is ook de reden dat ik 't nog niet had gedaan :) Maar het geeft in ieder geval een richting aan.
Ik zal zo eens een poging wagen.
 
Johnny Cash

Johnny Cash

18/04/2014 14:00:44
Quote Anchor link
aha ;)

Op internet heb ik wel veel "uitzondering op regels" gevonden, maar een specifieke zoals ik beschrijf.
Heb ook al veel gepuzzeld, maar mijn kennis van Jquery/Javascript is te minimaal voor dergelijke aanpassingen...
 
Frank Nietbelangrijk

Frank Nietbelangrijk

18/04/2014 15:47:41
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
        function nonWorkingDates(date){
            var day = date.getDay(), Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6;
            
            var openDates = [[04,27,2014]];            
            var closedDates = [[12,25,2014],[12,26,2014],[04,21,2014]];            
            var closedDays = [Sunday];
            
            // Zoek naar datums waarin we (per uitzondering) geopend zijn:
            for (i = 0; i < openDates.length; i++) {
                if (date.getMonth() == openDates[i][0] - 1 && date.getDate() == openDates[i][1] && date.getFullYear() == openDates[i][2]) {
                    return true;
                }
            }        
            
            // er is geen datum gevonden dus gaan we zoeken naar vaste dagen dat we gesloten zijn:
              for (var i = 0; i < closedDays.length; i++) {
                if (day == closedDays[i]) {
                    return false;
                }
            }
            
            // er is geen vaste dag gevonden dus kijken we naar specifieke datums waarop we gesloten zijn:
            for (i = 0; i < closedDates.length; i++) {
                if (date.getMonth() == closedDates[i][0] - 1 && date.getDate() == closedDates[i][1] && date.getFullYear() == closedDates[i][2]) {
                    return false;
                }
            }
            
            // en anders zijn we dus open      
            return true;
        }
Gewijzigd op 18/04/2014 15:48:12 door Frank Nietbelangrijk
 
Johnny Cash

Johnny Cash

18/04/2014 16:03:52
Quote Anchor link
Bedankt voor je reactie!

Ik denk dat je wel heel dichtbij de oplossing bent, maar het werkt nog niet...
Had je het getest? Zo ja werkte de code goed?

Anders doe ik namelijk nog iets fout.

Hoor graag van je.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

18/04/2014 18:28:49
Quote Anchor link
De functie moet een array returnen, geen Boolean.
Als koopzondag een vaste zondag in de maand is (wat vaak het geval is) kan je ook nog dit doen:
Code (js)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
    if (date.getDay() == 0) {
        if(date.getDate() > 7 && date.getDate() < 15) {
            return [true, "", "Koopzondag!"];
        }

        else {
             return [false, "", "Gesloten!"];
        }
    }
Gewijzigd op 18/04/2014 18:29:18 door Ger van Steenderen
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.