คุณสามารถส่งตัวเลือก Datepickerจาก php ไปยังองค์ประกอบ date_popup ผ่านคีย์ '#datepicker_options':
<?php
$form['date'] = array(
'#title' => t('Pick the desired date'),
'#type' => 'date_popup',
'#datepicker_options' => array(
'minDate' => 0,
),
);
ด้วยวิธีนี้คุณสามารถส่งผ่านเกือบทุกตัวเลือก แต่ผู้ที่ยอมรับฟังก์ชั่นเป็นค่าเช่นเดียวbeforeShowDay
กับที่จำเป็นในการ จำกัด วันหยุดสุดสัปดาห์หรือวันหยุดตามคำตอบที่อ้างอิงโดย Nikit: /programming/501943/can- ที่ jQuery-UI-datepicker กำลังจะทำเพื่อ disable-วันเสาร์และวันอาทิตย์และ holid
ดังนั้นจำเป็นต้องมีจาวาสคริปต์ ก่อนอื่นคุณต้องรวมไฟล์ js ที่กำหนดเองจากรหัสโมดูลของคุณ:
<?php
drupal_add_js(drupal_get_path('module', 'FOO') . '/FOO.js');
และระบุรหัสบางส่วนFOO.js
เพื่อขยายการตั้งค่าตามโมดูล date_popup ด้วยตัวเลือกของเราเอง
นี่คือตัวอย่างที่เพิ่มตัวเลือกพื้นฐานเพื่อปิดใช้งานวันหยุดสุดสัปดาห์สำหรับวิดเจ็ต datepicker ทั้งหมดในหน้า:
(function ($) {
Drupal.behaviors.FOO = {
attach: function (context) {
for (var id in Drupal.settings.datePopup) {
Drupal.settings.datePopup[id].settings.beforeShowDay = $.datepicker.noWeekends;
}
}
};
})(jQuery);
การขยายไปยังวันหยุดเป็นกิจกรรมที่ผู้อ่าน :)
หมายเหตุ: สามปรากฏของFOO
ในตัวอย่างของฉันไม่จำเป็นต้องเป็นตัวอักษรเดียวกันเช่น: คุณสามารถให้BAZ
พฤติกรรมจากBAR.js
FOO.module
อัปเดต: เพื่อขยายเวลาด้านบนสำหรับความพร้อมใช้งานของวันที่กำหนดเองเพียงเพิ่มฟังก์ชันที่คืนค่าจริง / เท็จสำหรับวันที่ได้รับจากพารามิเตอร์
(function ($) {
Drupal.behaviors.FOO = {
attach: function (context) {
for (var id in Drupal.settings.datePopup) {
Drupal.settings.datePopup[id].settings.beforeShowDay = checkDate;
}
}
};
function checkDate(date) {
if ((date.getDate() % 2) == 0) {
return [false, 'Even days not available'];
}
else {
return [true, 'Odd days are fine'];
}
}
})(jQuery);
คุณสามารถค้นหาตัวอย่างที่สมบูรณ์มากขึ้นในโมดูลการจำกัด วันที่