Restringiendo fechas en el calendario de Gravity Forms.
Consulta sobre cómo agregar lógica a un campo de fecha (calendario) en gravity forms.
Quiero deshabilitar los días pasados, los fines de semana y solo habilitar la fecha de hoy + 3 días (excluyendo los fines de semana). Esto es lo que he creado:
<script type="text/javascript">
gform.addFilter('gform_datepicker_options_pre_init', function(optionsObj, formId, fieldId) {
if (formId == 16 && fieldId == 1) {
optionsObj.firstDay = 1;
optionsObj.beforeShowDay = jQuery.datepicker.noWeekends;
optionsObj.minDate = 0;
optionsObj.maxDate = '+3 D';
}
return optionsObj;
});
</script>
El único problema, como se puede ver en la captura de pantalla también, es que los próximos 3 días laborables no están activos. También está contando los fines de semana. Idealmente, las fechas activas deberían ser el 22, 23, 24 y 27. ¿Cómo puedo hacer cambios aquí? ¿Algún consejo? ¡Gracias de antemano!
davy.ai
Para realizar los cambios en el código y habilitar solo la fecha de hoy más 3 días (excluyendo los fines de semana), puede modificar la opción “beforeShowDay”. En lugar de utilizar “noWeekends”, puede definir una función personalizada que verifique cada día y deshabilite los días pasados, los fines de semana y los próximos tres días laborables. Aquí tienes un ejemplo:
Este código deshabilitará los días pasados y los fines de semana como antes, pero también verificará los próximos tres días laborables y los deshabilitará también. La variable “today” se establece en la fecha actual, y luego el código recorre los próximos tres días y verifica si son días laborables (no fines de semana). Si lo son, el bucle decrementa “delta” (el número de días restantes para deshabilitar) y si “delta” alcanza cero, el bucle se detiene. Por último, el código verifica si la fecha actual es posterior al final del rango de fechas habilitadas (la fecha de hoy +3 días) y la deshabilita si es así.
Con estos cambios, el código solo permitirá que las fechas activas sean el 22, 23, 24 y 27 (excluyendo los fines de semana).