2008-11-06 13 views

Odpowiedz

164

Jeśli spojrzeć na dół strony demo trochę, zobaczysz sekcję "Ograniczanie Datepicker". Użyj listy rozwijanej, aby określić "Year dropdown shows last 20 years" demo, i uderzył View Source:

$("#restricting").datepicker({ 
    yearRange: "-20:+0", // this is the option you're looking for 
    showOn: "both", 
    buttonImage: "templates/images/calendar.gif", 
    buttonImageOnly: true 
}); 

będziemy chcieli zrobić to samo (oczywiście zmieniający -20 do -100 czy coś).

+0

Dziękujemy! Spojrzałem tam, ale musiałem to przegapić. Działa idealnie. –

+1

Próbuję tego użyć, ale pokazuje się tylko -20 lat od daty, której obecnie _selected_ ...? – ajbeaven

+5

Możesz także użyć 'c' zamiast' + 0', więc 'yearRange:" -20: c ",' – Kokos

5

Dodając do tego, co wysłaliśmy @ Shog9, możesz również ograniczyć daty indywidualnie w funkcji beforebackoway: callback.

można dostarczać funkcję, która pobiera datę i zwraca tablicę logiczną:

"$(".selector").datepicker({ beforeShowDay: nationalDays}) 
natDays = [[1, 26, 'au'], [2, 6, 'nz'], [3, 17, 'ie'], [4, 27, 'za'], 
[5, 25, 'ar'], [6, 6, 'se'], [7, 4, 'us'], [8, 17, 'id'], [9, 7, 
'br'], [10, 1, 'cn'], [11, 22, 'lb'], [12, 12, 'ke']]; 
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, '']; 
} 
+0

co jest nie tak z podświetlaniem składni tutaj? i jaka jest umowa z NationalDays? Nie rozumiem twojego kodu przepraszam, jeśli mógłbyś wyjaśnić? – knocte

2

Au, NZ, tj itd są kody krajów dla krajów, których święto państwowe są wyświetlane (Australia, Nowa Zelandia, Irlandia, ...). Jak widać w kodzie, wartości te są łączone z "_day" i przekazywane, aby zastosować je do tego dnia jako styl CSS. Odpowiednie style mają postać pokazaną poniżej, która przesuwa tekst na ten dzień na uboczu i zastępuje go obrazem flagi danego kraju.

Wartość "false", która jest przekazywana z nowym stylem oznacza, że ​​te dni mogą nie zostać wybrane.

38

Dlaczego nie wyświetlać pól wyboru roku lub miesiąca?

$(".datefield").datepicker({ 
    changeMonth: true, 
    changeYear: true, 
    yearRange:'-90:+0' 
}); 
+1

prawdopodobnie powinien być cytatem z całego roku. – Eonasdan

+0

to jest dokładnie to, czego szukam .. dziękuję, proszę pana ... changeMonth, changeYear – kebyang

+0

To jest idealna odpowiedź! Dziękuję Ci! –

10

czego nikt inny nie umieścić to, że można również ustawić ciężko kodowane zakresy dat:

na przykład:

yearRange: "1901:2012" 

podczas gdy może to być wskazane, aby tego nie robić, to jest to jednak opcja, która jest całkowicie poprawna (i przydatna, jeśli prawnie szukasz konkretnego roku w katalogu - np. "1963: 1984").

6

Idealny dla daty urodzenia (pól i używam) jest podobny do tego, co Shog9 powiedział, chociaż mam zamiar dać bardziej konkretny przykład DOB:

$(".datePickerDOB").datepicker({ 
    yearRange: "-122:-18", //18 years or older up to 122yo (oldest person ever, can be sensibly set to something much smaller in most cases) 
    maxDate: "-18Y", //Will only allow the selection of dates more than 18 years ago, useful if you need to restrict this 
    minDate: "-122Y" 
}); 

Nadzieja przyszłych Googlersi uważają to za przydatne:).

+0

Najstarsza osoba to Jeanne Calmant i miała 122 lata. Chciałbym umieścić go na 140, aby zachować pewien margines :) –

+0

@ ChristristopheRoussy Masz rację, myślę, że myślałem o najstarszej żyjącej osobie ... która jest teraz 116 :). Odpowiedź edytowana. – Maverick

2
$("#DateOfBirth").datepicker({ 
     yearRange: "-100:+0", 
     changeMonth: true, 
     changeYear: true, 
    }); 

yearRange: '1950: 2013', // określając zakres zakodowanego rok lub tędy

yearRange: "-100: +0", // ostatnie sto lat

Pomoże to pokazać spadek z roku na miesiąc i miesiąc.

1

myślę, że może to działać jak dobrze

$(function() { 
    $(".DatepickerInputdob").datepicker({ 
     dateFormat: "d M yy", 
     changeMonth: true, 
     changeYear: true, 
     yearRange: '1900:+0', 
     defaultDate: '01 JAN 1900' 
    });