Estoy tratando de deshabilitar horas específicas para fechas específicas usando jQuery DateTimePicker de esta manera:
jQuery('#datetimepicker').datetimepicker({ disabledDates: ['27/04/2022 14:00'], format:'d/m/YH:i' });Sin embargo, esto no funciona. Puedo deshabilitar solo horas específicas para cada día o deshabilitar fechas específicas.
Esto se debe a que las "fechas deshabilitadas" del complemento jQuery DateTimePicker solo aceptan y deshabilitan días. https://xdsoft.net/jqplugins/datetimepicker/
Parece que no existe tal opción para deshabilitar horas específicas, podría trabajar solo habilitando horas específicas con https://xdsoft.net/jqplugins/datetimepicker/#allowTimes
jQuery('#datetimepicker').datetimepicker({ datepicker:false, allowTimes:[ '01:00', '02:00', '03:00', '04:00', ... , '15:00', '60:00' ] });Si desea continuar con jQuery DateTimePicker, deberá escribir su propia función, por ejemplo.
jQuery('#datetimepicker').datetimepicker({ format:'dmY H:i', timepicker: true, lang: 'en', onGenerate:function(ct,$i){ //some function here to disable certain times }); } } });o puede usar Bootstrap Datepicker que tiene una opción para hacer exactamente lo que quiere https://getdatepicker.com/4/Options/#endisabledhours
prueba esta referencia
$(function () { var disabledDate = ['2020-07-14', '2020-07-15','2020-07-16']; $('#datetimepickerDemo').datetimepicker({ disabledDates: disabledDate }); });Ok, en realidad me las arreglé para resolver esto yo mismo. Estoy usando PHP, pero esencialmente puedes usar cualquier matriz multidimensional y codificarla con JSON.
$times[]=[ '2022-04-28'=>[ 'hour' => 10, 'minute' => 30 ] ]; $times[]=[ '2022-04-28'=>[ 'hour' => 11, 'minute' => 15 ] ]; $times[]=[ '2022-04-29'=>[ 'hour' => 13, 'minute' => 30 ] ]; $dates=json_encode($times); Una vez que tenga su lista de fechas y horas, puede usar la función onGenerate() para recorrer sus fechas y agregar una clase deshabilitada a las horas específicas.
jQuery('#datetimepicker').datetimepicker({ lang:'en', format:'Ymd H:i', formatDate:'Ym-d', step:15, onGenerate: function(ct, $i){ var date=moment(ct).format('Y-MM-D'); var datesArray=<?echo $dates;?>; $.each(datesArray, function(i, dates){ if(date in dates){ var times=dates[date]; $.each(times, function(index, time){ var hour=times['hour']; var minute=times['minute']; var $object=$('[data-hour="' + hour + '"][data-minute="' + minute + '"]'); $object.addClass('xdsoft_disabled'); }); } }); } });Tenga en cuenta: deberá usar exactamente el mismo formato de fecha para su matriz y función jQuery. Además, mi paso está configurado en incrementos de 15 minutos. Entonces esto solo deshabilita ese paso exacto.