Obecnie pracuję nad selektorem daty Jquery, w którym święta są wyłączone i wszystkie niedziele, z wyjątkiem pierwszej w każdym miesiącu. Próbowałem trochę pobawić się kodem i dowiedziałem się, jak wyłączyć wszystkie niedziele i święta, ale nie mogę zrozumieć, jak włączyć pierwszą niedzielę każdego miesiąca.
Obecnie mój kod wygląda tak:
<script type="text/javascript">
(function(){
var natDays = [[12, 24],[12, 25], [1,1], [12, 31]];
var daysToDisable = [0];
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'];
}
}
for (i = 0; i < daysToDisable.length; i++) {
if ($.inArray(day, daysToDisable) != -1) {
return [false];
}
}
return [true];
}
// Datepicker
$('#datepicker').datepicker({
inline: true,
firstDay: 1,
changeYear: true,
changeMonth: true,
beforeShowDay: nationalDays,
});
});
</script>
2 odpowiedzi
Logicznie rzecz biorąc, pierwsza niedziela miesiąca przypada zawsze w dniu lub przed siódmą, a druga (i kolejne) niedziela przypada po siódmej.
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'];
}
}
if (date.getDate() > 7 && $.inArray(date.getDay(), daysToDisable) != -1)
return [false];
}
return [true];
}
Sugerowałbym również zmianę struktury tablicy natDays
na tablicę płaską, aby przyspieszyć wyszukiwanie. Dla prefiksów klas (które nie są ustawione w twoim przykładzie) możesz użyć dodatkowej tablicy z pasującymi indeksami. Twoja ostateczna funkcja wyglądałaby tak:
var natDays = ["12-24", "12-25", "1-1", "12-31"];
var classPrefixes = ["", "", "", ""];
var daysToDisable = [0];
function nationalDays(date) {
var index = $.inArray((date.getMonth() + 1) + "-" + date.getDate(), natDays);
if (index != -1) {
return [false, classPrefixes[index] + '_day'];
}
if (date.getDate() > 7 && $.inArray(date.getDay(), daysToDisable) != -1)
return [false];
}
return [true];
}
Metoda, której szukasz, to date.getDay(), która zwróci liczbę od 0 do 6, gdzie 0 oznacza niedzielę.
function nationalDays(date) {
if(date.getDay() == 0) {
// do stuff...
Podobne pytania
Nowe pytania
jquery-ui
jQuery UI to wyselekcjonowany zestaw interakcji interfejsu użytkownika, efektów, widżetów i motywów, zbudowany na bazie biblioteki jQuery JavaScript.
natDays
. Również nie wiem, dlaczego nie natrafiłem na rozwiązanie w pierwszą niedzielę każdego miesiąca, to całkiem logiczne! Może byłam po prostu zbyt zmęczona po 20 godzinach pracy :)