Jquery Datepicker - datum uitzonderen van "nonWorkingDates"
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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];
}
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.
Het principe wat je hebt geschreven begrijp ik, 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.
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...
Code (php)
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
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;
}
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
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.
Als koopzondag een vaste zondag in de maand is (wat vaak het geval is) kan je ook nog dit doen:
Code (js)
1
2
3
4
5
6
7
8
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!"];
}
}
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