Tworzę formularz w Drupal 7 z interfejsem API formularza. W tej chwili mogę utworzyć zwykłe pole wprowadzania kalendarza z następującym kodem:
$form['services_tab']['schedule_datepicker'] = array(
'#title' => t('Pick the desired date'),
'#type' => 'date_popup',
'#date_year_range' => '0:0',
'#date_format' => 'Y-m-d',
'#prefix' => '<div id="datepicker-schedule">',
'#suffix' => '</div>',
);
W tej chwili mogę wyświetlić piękne okienko kalendarza. To, co próbuję osiągnąć, to włączyć lub wyłączyć niektóre daty w oparciu o zasadę: wyłącz wszystkie soboty i niedziele; a nawet usunąć stan kliknięcia z określonych dat na podstawie listy świąt państwowych ...
Czy jest to coś, co można osiągnąć za pomocą kodowania PHP, czy też należy to zrobić za pomocą jQuery? W przypadku, gdy jQuery jest rozwiązaniem, byłbym wdzięczny za wszelkie wskazówki, jak to zrobić ... Kalendarz jest tabelą, ale komórki tabeli nie mają identyfikatora ani czegoś, co mogłoby pomóc mi je znaleźć i wyłączyć na podstawie reguły. ..
Dziękuję Ci.
Odpowiedzi:
Możesz przekazać niektóre opcje Datepicker'a z php do elementu date_popup poprzez klucz '#datepicker_options':
Dzięki tej metodzie możesz przekazać prawie każdą opcję, z wyjątkiem tych, które akceptują funkcję jako wartość, jako taką
beforeShowDay
, która była potrzebna do ograniczenia weekendów lub świąt zgodnie z odpowiedzią wymienioną przez Nikit: /programming/501943/can- the-jquery-ui-datepicker-be-made-to-disable-saturdays-and-Sunday-and-holidDlatego wymagany jest javascript. Najpierw musisz dołączyć niestandardowy plik js z kodu modułu:
i podaj trochę kodu,
FOO.js
aby rozszerzyć ustawienia ustawione przez moduł date_popup o nasze własne opcje.Oto przykład, który dodaje podstawową opcję wyłączenia weekendów dla wszystkich widżetów datepicker na stronie:
Przedłużenie wakacji pozostawia się czytelnikowi jako ćwiczenie :)
Uwaga: trzy wystąpienia
FOO
w moich przykładach nie muszą być tym samym dosłownym, tzn .: możesz podaćBAZ
zachowanieBAR.js
zFOO.module
.Aktualizacja: aby rozszerzyć powyższą dostępność dni niestandardowych, po prostu dodaj funkcję zwracającą wartość prawda / fałsz dla dnia otrzymanego przez parametry.
Pełniejszy przykład można znaleźć w module Ograniczenia daty .
źródło
Użyłem modułu Ograniczenia daty. Zapewnia to i opcję ograniczenia daty pod względem liczby parametrów, takich jak stała data, data względna itp.
źródło