Estoy creando un formulario en Drupal 7 con el formulario API. En este momento, puedo crear un campo de entrada de calendario ordinario con el siguiente código:
$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>',
);
En este momento puedo hacer que aparezca la hermosa ventana emergente del calendario. Lo que intento lograr es habilitar o deshabilitar ciertas fechas en función de una regla como: deshabilitar todos los sábados y domingos; o incluso eliminar el estado de clic de fechas específicas según una lista de feriados nacionales ...
¿Es esto algo que se puede lograr con la codificación PHP, o debe hacerse con jQuery? En caso de que jQuery sea la solución, agradecería cualquier sugerencia sobre cómo hacer eso ... El calendario es una tabla, pero las celdas de la tabla no tienen una ID o algo que pueda ayudarme a encontrarlas y desactivarlas según una regla. ..
Gracias.
Respuestas:
Puede pasar algunas opciones de Datepicker de php al elemento date_popup a través de la tecla '#datepicker_options':
Con este método, puede pasar casi cualquier opción, excepto aquellas que aceptan una función como valor, como
beforeShowDay
la que se necesita para restringir los fines de semana o días festivos de acuerdo con la respuesta a la que Nikit hace referencia: /programming/501943/can- the-jquery-ui-datepicker-be-made-to-disable-saburdays-and-sundays-and-holidPor lo tanto, se requiere JavaScript. Primero debe incluir un archivo js personalizado del código de su módulo:
y proporcione un código
FOO.js
para ampliar la configuración establecida por el módulo date_popup con nuestras propias opciones.Aquí hay un ejemplo que agrega la opción básica para deshabilitar los fines de semana para todos los widgets de selector de fecha en la página:
Extender a las vacaciones se deja como ejercicio para el lector :)
Nota: las tres ocurrencias de
FOO
en mis ejemplos no necesitan ser el mismo literal, es decir: puede proporcionar unBAZ
comportamientoBAR.js
desdeFOO.module
.Actualización: para ampliar lo anterior para la disponibilidad de días personalizados, simplemente agregue una función que devuelva verdadero / falso para el día recibido por los parámetros.
Puede encontrar un ejemplo más completo en el módulo Restricciones de fecha .
fuente
He usado el módulo de restricciones de fecha. Esto proporciona una opción para restringir la fecha en el número de parámetros como fecha fija, fecha relativa, etc.
fuente