Ich erstelle ein Formular in Drupal 7 mit der Formular-API. Im Moment kann ich ein gewöhnliches Kalender-Eingabefeld mit dem folgenden Code erstellen:
$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>',
);
Im Moment kann ich das schöne Kalender-Popup anzeigen lassen. Ich versuche, bestimmte Daten zu aktivieren oder zu deaktivieren, basierend auf einer Regel wie: Alle Samstage und Sonntage deaktivieren; oder entfernen Sie sogar den Klickstatus von bestimmten Daten basierend auf einer Liste von Nationalfeiertagen ...
Ist dies etwas, das mit PHP-Codierung erreicht werden kann, oder muss es mit jQuery durchgeführt werden? Für den Fall, dass jQuery die Lösung ist, würde ich mich über Hinweise dazu freuen ... Der Kalender ist eine Tabelle, aber Tabellenzellen haben keine ID oder etwas, das mir helfen könnte, sie basierend auf einer Regel zu finden und zu deaktivieren. ..
Vielen Dank.
Antworten:
Sie können einige Datepicker-Optionen von PHP an das date_popup-Element über den Schlüssel '#datepicker_options' übergeben:
Mit dieser Methode können Sie fast jede Option übergeben, außer denjenigen, die eine Funktion als Wert akzeptieren, wie die
beforeShowDay
, die erforderlich ist, um Wochenenden oder Feiertage gemäß der von Nikit angegebenen Antwort einzuschränken: /programming/501943/can- the-jquery-ui-datepicker-be-made-to-disable-samstags-and-sonntags-and-holidDaher ist Javascript erforderlich. Zuerst müssen Sie eine benutzerdefinierte js-Datei aus Ihrem Modulcode einfügen:
und geben Sie Code ein
FOO.js
, um die vom date_popup-Modul festgelegten Einstellungen um unsere eigenen Optionen zu erweitern.Hier ist ein Beispiel, das die grundlegende Option zum Deaktivieren von Wochenenden für alle Datepicker-Widgets auf der Seite hinzufügt:
Die Verlängerung auf Feiertage bleibt dem Leser als Übung überlassen :)
Hinweis: Die drei Vorkommen
FOO
in meinen Beispielen müssen nicht dasselbe Literal sein, dh Sie können einBAZ
Verhalten inBAR.js
from angebenFOO.module
.Update: Um das oben Gesagte für die Verfügbarkeit benutzerdefinierter Tage zu erweitern, fügen Sie einfach eine Funktion hinzu, die true / false für den von den Parametern empfangenen Tag zurückgibt.
Ein vollständigeres Beispiel finden Sie im Modul Datumsbeschränkungen .
quelle
Ich habe das Modul "Datumsbeschränkungen" verwendet. Dies bietet und Option, um das Datum auf die Anzahl der Parameter wie festes Datum, relatives Datum usw. zu beschränken.
quelle