Saya membuat formulir di Drupal 7 dengan formulir API. Saat ini, saya dapat membuat bidang input kalender biasa dengan kode berikut:
$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>',
);
Saat ini saya bisa menampilkan munculan kalender yang indah. Yang ingin saya capai adalah mengaktifkan atau menonaktifkan tanggal tertentu berdasarkan aturan seperti: nonaktifkan semua hari Sabtu dan Minggu; atau bahkan menghapus status klik dari tanggal tertentu berdasarkan daftar hari libur nasional ...
Apakah ini sesuatu yang dapat dicapai dengan pengkodean PHP, atau apakah perlu dilakukan dengan jQuery? Dalam hal jQuery adalah solusinya, saya akan menghargai setiap petunjuk tentang cara melakukan itu ... Kalender adalah sebuah tabel, tetapi sel-sel tabel tidak memiliki ID atau sesuatu yang dapat membantu saya menemukan dan menonaktifkannya berdasarkan aturan. ..
Terima kasih.
Jawaban:
Anda bisa meneruskan beberapa opsi Datepicker dari php ke elemen date_popup melalui kunci '#datepicker_options':
Dengan metode ini Anda dapat melewati hampir semua opsi selain yang menerima fungsi sebagai nilai, karena
beforeShowDay
, yang diperlukan untuk membatasi akhir pekan atau hari libur sesuai dengan jawaban yang dirujuk oleh Nikit: /programming/501943/can- the-jquery-ui-datepicker-be-made-to-disable-saturdays-and-sundays-and-holidKarenanya, javascript diperlukan. Pertama, Anda perlu memasukkan file js khusus dari kode modul Anda:
dan berikan beberapa kode
FOO.js
untuk memperluas pengaturan yang ditetapkan oleh modul date_popup dengan opsi kita sendiri.Berikut adalah contoh yang menambahkan opsi dasar untuk menonaktifkan akhir pekan untuk semua widget datepicker di halaman:
Perpanjang liburan dibiarkan sebagai latihan untuk pembaca :)
Catatan: tiga kejadian
FOO
dalam contoh saya tidak harus literal yang sama, yaitu: Anda dapat memberikanBAZ
perilakuBAR.js
dariFOO.module
.Pembaruan: untuk memperpanjang di atas untuk ketersediaan hari kustom, cukup tambahkan fungsi yang mengembalikan true / false untuk hari yang diterima oleh parameter.
Anda dapat menemukan contoh yang lebih lengkap dalam modul Pembatasan Tanggal .
sumber
Saya telah menggunakan modul Pembatasan Tanggal. Ini memberikan dan opsi untuk membatasi tanggal pada sejumlah parameter seperti tanggal tetap, tanggal relatif, dll.
sumber