Jquery 引导DateTimePicker-禁用现在之前的日期和时间(当前时间)
我正试图用这个日期选择器解决一些非常奇怪的问题。 这是我的密码Jquery 引导DateTimePicker-禁用现在之前的日期和时间(当前时间),jquery,datetimepicker,bootstrap-datetimepicker,Jquery,Datetimepicker,Bootstrap Datetimepicker,我正试图用这个日期选择器解决一些非常奇怪的问题。 这是我的密码 $("#dep-date").datetimepicker({ // From-date timepicker: true, closeOnDateSelect: false, closeOnTimeSelect: true, initTime: true, minDate: 0, roundTime: 'ceil', onChangeDateTime: function (s
$("#dep-date").datetimepicker({ // From-date
timepicker: true,
closeOnDateSelect: false,
closeOnTimeSelect: true,
initTime: true,
minDate: 0,
roundTime: 'ceil',
onChangeDateTime: function (selectedDate) {
if (selectedDate != null) {
$("#ret-date").datetimepicker({ //set 'to' mindate as selected
minDate: new Date(selectedDate),
});
startDate = $("#dep-date").val();
}
},
onClose: function () {
$("#ret-date").focus();
}
});
$("#ret-date").datetimepicker({ // TO-date
timepicker: true,
closeOnDateSelect: false,
closeOnTimeSelect: true,
initTime: true,
minDate: 0,
onClose: function (selectedDate) {
if (selectedDate != null) {
var endDate = $("#ret-date").val();
if (startDate > endDate) {
$("#err").css("display", "block");
$("#ret-date").val('');
} else {
$("#err").css("display", "none");
$("#dep-date").datetimepicker({
maxDate: new Date(selectedDate) //set 'from' maxdate as selected
});
}
}
}
});
如何在此代码中设置
minTime
属性?我想要实现的是,只有在当天,当前时间之前的时间才应该被禁用。但是,对于剩余的几天,应再次启用所有时间。因此,我不能使用禁用小时
。有什么想法吗?这当然是可能的,尽管实现起来有点困难
您需要做的是将minDate
参数初始化为当天午夜。然后,将事件侦听器绑定到dp.change
事件,并拒绝任何早于当前时间的时间。
拒绝此时间时,通知用户并将DateTimePicker时间重置为当前时间。我创建了一个函数来执行此操作:
// Argument obj is the used DateTimePicker object
// Argument f is the selected datetime by the user
// Argument n is the current datetime
var checkDate = function (obj, f, n) {
if (f.getTime() < n.getTime()+60*1000 && !open) {
open = true;
$('#message').dialog({
modal: true,
position: ['center', 'center'],
show: 'blind',
hide: 'blind',
width: 400,
dialogClass: 'ui-dialog-osx',
buttons: {
"I understand. Let me try again": function () {
$(this).dialog("close");
obj.data('DateTimePicker').setDate(n);
open = false;
}
}
});
}
}
这将产生您想要的结果:
您可以在我为您准备的JSFIDLE中找到完整的代码:
您还可以禁用日期数组
Date.prototype.addDays = function(days) {
var dat = new Date(this.valueOf())
dat.setDate(dat.getDate() + days);
return dat;
}
function getDates(startDate, stopDate) {
var dateArray = new Array();
var currentDate = startDate;
while (currentDate <= stopDate) {
dateArray.push( new Date (currentDate) )
currentDate = currentDate.addDays(1);
}
console.dir(dateArray)
return dateArray;
}
to = new Date();
d = new Date();
x = 96;
d.setDate(d.getDate() - x);
disabledDates= getDates(d,to);
$('#foo').datetimepicker({
disabledDates:disabledDates,
format: 'DD.MM.Y',
viewMode: 'days'
});
Date.prototype.addDays=函数(天){
var dat=新日期(this.valueOf())
dat.setDate(dat.getDate()+天);
返回数据;
}
函数getDates(startDate、stopDate){
var dateArray=新数组();
var currentDate=起始日期;
while(currentDate)运行时代码输出了什么?您从未解释过。问题本身不知道如何使输出仅适用于当前日期时间mintime应适用于剩余天数不应。例如:2015/07/14 16:30(今天)如果我需要选择2015/07/15 02:30,则当前时间是否在16:30之前全部禁用?02:30表示将禁用该时间,因此除当前日期外,应启用剩余天数。
Date.prototype.addDays = function(days) {
var dat = new Date(this.valueOf())
dat.setDate(dat.getDate() + days);
return dat;
}
function getDates(startDate, stopDate) {
var dateArray = new Array();
var currentDate = startDate;
while (currentDate <= stopDate) {
dateArray.push( new Date (currentDate) )
currentDate = currentDate.addDays(1);
}
console.dir(dateArray)
return dateArray;
}
to = new Date();
d = new Date();
x = 96;
d.setDate(d.getDate() - x);
disabledDates= getDates(d,to);
$('#foo').datetimepicker({
disabledDates:disabledDates,
format: 'DD.MM.Y',
viewMode: 'days'
});