wake-up-neo.com

jQuery UI Datepicker - Deaktivieren bestimmter Tage

Gibt es eine (einfache) Möglichkeit, den jQuery UI Datepicker so einzustellen, dass die Auswahl bestimmter, vordefinierter Tage nicht zulässig ist?

Ich konnte diese Vorgehensweise funktioniert erhalten, erzeugt jedoch einen Null-Fehler, der die Anzeige im IE verhindert.

'natDays [...]. 0' ist null oder kein Objekt

Danke im Voraus!

UPDATE: Könnte es helfen, wenn ich Code einsetze, oder? Trotzdem wurde das meiste davon direkt aus dem oben genannten Thread übernommen:

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

Danke noch einmal!

23
Sam

Haben Sie versucht, natDays richtig mit dem 'var'-Schlüsselwort vorne zu deklarieren?

Außerdem haben Sie am Ende Ihrer natDays-Definition ein zusätzliches Komma.

natDays [i] [2] funktioniert nicht, da die Arrays nur 2 Elemente enthalten - versuchen Sie einfach ''

Außerdem sollten Sie den Namen der beforeShowDay-Funktion korrekt festlegen - es sieht nicht so aus, als würde Ihre benutzerdefinierte Funktion sogar aufgerufen

9
Chris Haines

So können Sie bestimmte Datumsangaben von der Auswahl aus deaktivieren:

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

Quelle: jQuery - Datepicker - Bestimmte Daten deaktivieren

14
Tokes

Sie können die Option beforeShowDay verwenden. Ich musste jeden Tag nach dem 28. des Monats deaktivieren. Hier ist mein Code.

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

Hier finden Sie weitere Informationen dazu: http://api.jqueryui.com/datepicker/#option-beforeShowDay

Die an den beforeShowDay-Callback übergebene Datumsvariable ist ein JavaScript-Datumsobjekt. Sie kann daher mit verschiedenen Bibliotheken formatiert werden. Ein Zeitstempel kann mit date.getTime () usw. abgerufen werden.

7
Alex K

Das Problem mit IE liegt höchstwahrscheinlich in der folgenden Zeile:

altField: '#alternate',
}); 

Versuchen Sie das Kommasymbol zu entfernen und es sollte funktionieren. 

1
Lukas Celovsky
beforeShowDay: $.datepicker.noWeekends,

wird sein

beforeShowDay: noWeekendsOrHolidays,
1
allen
 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 });

Live Demo: http://jsfiddle.net/vfod0krm/

0
Roman