通过日期选择器禁用自定义下拉时间+如果禁用日期在禁用时间前一天



我有一个工作代码,几乎可以满足我的所有需求,但还有一件事需要帮助。

jQuery("#date_num").datepicker({
beforeShowDay: function(d) {
var day = d.getDay();
var array = ['28/09/2020', '20/09/2020'];
var string = jQuery.datepicker.formatDate('dd/mm/yy', d);
return [(day != 6 && array.indexOf(string) === -1)];
},
minDate: +0,
onSelect: function(dateText, inst) {
var day = jQuery(this).datepicker("getDate").getDay();
jQuery("p#time_num_friday_field").toggle(day === 5);
jQuery("p#time_num_field").toggle(day !== 5);
var selectedDate = jQuery('#date_num').datepicker('getDate');
var today = new Date();
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0);
if (Date.parse(today) === Date.parse(selectedDate)) {
jQuery( "#time_num option, #time_num_friday option" ).each(function() {
var dt = new Date();
//dt.setHours(dt.getHours()+4);
var time = (dt.getHours()<10?'0':'') + dt.getHours() + ":" + (dt.getMinutes()<10?'0':'') + dt.getMinutes();
var value = jQuery(this).val();
if(time >= value){    
jQuery(this).prop("disabled", true);
}
});
} else {
jQuery( "#time_num option, #time_num_friday option" ).each(function() {
jQuery(this).prop("disabled", false);
});
}
}
});

我需要另一件事是禁用下拉自定义小时列表。让我准确地解释一下我需要什么。

1:在日期选择器上禁用一天,此选项为:var array = ['28/09/2020', '20/09/2020'];

2:如果这些日期被禁用,我需要禁用前一天禁用的下拉时间列表-如果我有上午9点到下午6点的时间,而我禁用了明天的日期,那么我需要禁用上午12点到下午5点的时间(比如周五(。

提前感谢帮助者。

p.s。只是为了让它更清楚。一个人可以在今天或明天上午9点至下午6点订购送货或取货服务。如果我禁用明天的送货服务,我需要今天的时间为上午9点到12点,基本上是在12点之后的每一个小时都禁用。

所以经过一个漫长的夜晚,我设法解决了我自己的请求(对我来说很痛苦,哈哈(

我所做的是获取日期数组,并通过jQuery.each将其分解,这样它们就可以分离。

采用日期选择器选择的日期并减少一天,因此如果选择的日期是2020年9月27日,则会显示右侧下拉字段。

对于下拉,基本上是2020年9月27日=2020年09月28日和2020年9日28日=2020月9日

var dates = ['09/28/2020'];
jQuery("#date_num").datepicker({
beforeShowDay: function(d) {
var day = d.getDay();
var string = jQuery.datepicker.formatDate('mm/dd/yy', d);
var hide = dates.indexOf(string) === -1;
return [(day != 6 && hide)];
},
minDate: +0,
dateFormat: 'dd/mm/yy',
onSelect: function(dateText, inst) {
var selectedDate = jQuery(this).datepicker('getDate');
var day = jQuery(this).datepicker("getDate").getDay();
var string = jQuery.datepicker.formatDate('mm/dd/yy', selectedDate);
jQuery.each(dates, function(index,value) {
var dateNow = new Date(string);
var daysST = -1; 
dateNow.setDate(dateNow.getDate() - daysST);
var dateSub = jQuery.datepicker.formatDate('mm/dd/yy', dateNow); 
var innerDay = dateNow.getDay() -1;                     
checkArray(dateSub, dates);         
function checkArray(dateSub, dates) {
if (dates.indexOf(dateSub) !== -1) {
jQuery("p#time_num_friday_field").toggle(day === innerDay);
jQuery("p#time_num_field").toggle(day !== innerDay);
} else {
jQuery("p#time_num_friday_field").toggle(day === 5);
jQuery("p#time_num_field").toggle(day !== 5);
}
}           
});
var today = new Date();
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0);
if (Date.parse(today) === Date.parse(selectedDate)) {
jQuery( "#time_num option, #time_num_friday option" ).each(function() {
var dt = new Date();
//dt.setHours(dt.getHours()+4);
var time = (dt.getHours()<10?'0':'') + dt.getHours() + ":" + (dt.getMinutes()<10?'0':'') + dt.getMinutes();
var value = jQuery(this).val();
if(time >= value){    
jQuery(this).prop("disabled", true);
}
});
} else {
jQuery( "#time_num option, #time_num_friday option" ).each(function() {
jQuery(this).prop("disabled", false);
});
}
}
});

最新更新