6

Ich benutze jquery UI datepicker auf ein riesiges Projekt und ich realisiere jetzt, dass ich nur bestimmte Wochentage in einigen Bereichen zulassen muss. Ich lese ihre Dokumentation und habe nichts darüber gefunden. Ich weiß, dass es für jq einige datepickers-Skripte gibt, die das können, aber ich möchte kein zusätzliches Skript dafür verwenden, wenn es möglich ist. Wer kennt keine Abhilfe dafür? Vielleicht habe ich etwas in ihrer Dokumentation missverstanden?jQuery UI Datepicker - erlauben nur bestimmte Wochentage

HINWEIS: Beispiel für das gewünschte Verhalten: http://codeasp.net/blogs/raghav_khunger/microsoft-net/1088/jquery-datepicker-disable-specific-weekdays

Vielen Dank im Voraus für die Hilfe, Prost Pedro

+3

der Link auf Sie enthält die vollständige Antwort gepostet Frage .. –

+1

@Gaby: AND eine Demo! –

+0

@Andrew, yeap ... ziemlich straight-foward. –

Antwort

2

Aus der Dokumentation:

beforeShowDay: Die Funktion nimmt ein Datum als Parameter und muss ein Array mit [0] gleich true/false zurückgeben, das angibt, ob dieses Datum auswählbar ist, [1] entspricht einem CSS-Klassennamen oder '' für die Standardpräsentation und [2] einem optionalen Popup-Tooltip für dieses Datum. Es wird für jeden Tag im Datapicker aufgerufen, bevor es angezeigt wird.

Ein Beispiel finden Sie hier bitte:

http://codeasp.net/blogs/raghav_khunger/microsoft-net/1088/jquery-datepicker-disable-specific-weekdays

+0

Gefunden in den Kommentaren des Blogs, die etwas besser sah http://jquerybyexample.blogspot.com/2010/07/disable-specific-days-in-jquery.html –

7
$(".datepicker.future").datepicker('option','beforeShowDay',function(date){ 
    var td = date.getDay(); 
    var ret = [(date.getDay() != 0 && date.getDay() != 6),'',(td != 'Sat' && td != 'Sun')?'':'only on workday']; 
    return ret; 
}); 
+0

Die td-Variable wird einen ganzzahligen Wert zugewiesen, aber es ist mit Strings verglichen werden. Ich glaube du wolltest das: var td = ['Sonne', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sat'] [date.getDay()]; – primehalo

5

@Jan Thomas die Variable td hinzuzufügen vergessen. Der richtige Code ist:

$(".datepicker.future").datepicker('option','beforeShowDay',function(date){ 
    var td = date.getDay(); 
    var ret = [(date.getDay() != 0 && date.getDay() != 6),'',(td != 'Sat' && td != 'Sun')?'':'only on workday']; 
    return ret; 
}); 
+1

kann td "sat" sein, wenn es eine NUMERISCHE Darstellung des gegebenen Tages ist? Ein Fehler oder ich verstehe es nicht. – Tyler

+0

Der Variable td wird ein ganzzahliger Wert zugewiesen, aber sie wird mit Strings verglichen. Ich glaube du wolltest das: var td = ['Sonne', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sat'] [date.getDay()]; – primehalo

3
$('selector').datepicker({ 
beforeShowDay: $.datepicker.noWeekends // disable weekends 
}); 
0

Jean Mallet Antwort (beforeShowDay: $.datepicker.noWeekends) ist einfach und elegant.

Wenn Sie jedoch bereits eine Funktion mit beforeShowDay aufrufen (wie ich in meinem Fall war), können Sie bestimmte Wochentage (in diesem Fall Sonntag und Samstag) zusammen mit dem Rest deaktivieren Ihre Funktion:

beforeShowDay: function (date) { 

    /* your other function code here */ 

    if (date.getDay() > 0 && date.getDay() < 6) { 
     return [true, '']; 
    } else { 
     return [false, '']; 
    } 
} 

enter image description here