6

Używam datepaksu jquery UI w wielkim projekcie i zdaję sobie sprawę, że muszę zezwolić na pewne dni tygodnia tylko w niektórych obszarach. Czytałem ich dokumentację i nic nie znalazłem .. Wiem, że istnieje kilka skryptów datepickers dla jq, które mogą to zrobić, ale nie chcę używać żadnego dodatkowego skryptu, jeśli to możliwe. Ktoś zna jakieś obejście tego problemu? Może nie rozumiem niczego w ich dokumentacji?Datepicker interfejsu jQuery UI - zezwalaj tylko na określone dni tygodnia

UWAGA: Przykład pożądanego zachowania: http://codeasp.net/blogs/raghav_khunger/microsoft-net/1088/jquery-datepicker-disable-specific-weekdays

Dzięki z góry za pomoc, Cheers Pedro

+3

Link ty pisał zawiera pełną odpowiedź na ty pytanie .. –

+1

@Gaby a demo! –

+0

@Andrew, yeap ... całkiem prosto. –

Odpowiedz

2

Od docs:

beforeShowDay: Funkcja przyjmuje datę jako parametr i musi zwrócić tablicę z [0] równą true/false wskazującą, czy dana data jest do wybrania, [1] równą nazwie (klasom) CSS lub "" dla domyślnej prezentacji, oraz [2] opcjonalnej wyskakującej metce na tę datę. Jest wywoływana dla każdego dnia w datepicker, zanim zostanie wyświetlona.

Dla przykładu, można znaleźć tutaj:

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

+0

Znalazłem to w komentarzach bloga, który wyglądał trochę lepiej 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

Do zmiennej td przypisano wartość całkowitą, ale jest to porównywany do łańcuchów. Myślę, że tego chciałeś: var td = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] [date.getDay()]; – primehalo

5

@Jan Thomas zapomniał dodać zmienną td. Poprawny kod jest:

$(".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

nie można "usiąść", jeśli jest to reprezentacja NUMERYCZNA danego dnia? Błąd lub nie rozumiem. – Tyler

+0

Do zmiennej td przypisywana jest wartość całkowita, ale jest ona porównywana z ciągami. Myślę, że tego chciałeś: var td = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] [date.getDay()]; – primehalo

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

odpowiedź Jean Mallet za (beforeShowDay: $.datepicker.noWeekends) jest prosty i elegancki.

Jeśli jednak wywołujesz już funkcję przy użyciu numeru beforeShowDay (tak jak w moim przypadku), oto jak możesz wyłączyć określone dni tygodnia (w tym przypadku, w niedzielę i sobotę), powiązane razem z resztą swojej funkcji:

beforeShowDay: function (date) { 

    /* your other function code here */ 

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

enter image description here

Powiązane problemy