Javascript 再次初始化日期选择器引导程序
我尝试使用datepicker boostrap为简单的签入/签出系统设置2个日期选择器: 这是我的代码:Javascript 再次初始化日期选择器引导程序,javascript,jquery,datepicker,bootstrap-datepicker,Javascript,Jquery,Datepicker,Bootstrap Datepicker,我尝试使用datepicker boostrap为简单的签入/签出系统设置2个日期选择器: 这是我的代码: var nowTemp = new Date(); var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0); var checkin = $('#searchtype_checkin').datepicker({ onR
var nowTemp = new Date();
var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);
var checkin = $('#searchtype_checkin').datepicker({
onRender: function (date) {
return date.valueOf() < now.valueOf() ? 'disabled' : '';
},
format: 'dd/mm/yyyy'
}).on('changeDate', function (ev) {
if (ev.date.valueOf() > checkout.date.valueOf()) {
var newDate = new Date(ev.date)
newDate.setDate(newDate.getDate() + 2);
checkout.setValue(newDate);
}
checkin.hide();
$('#searchtype_checkout')[0].focus();
}).data('datepicker');
var checkout = $('#searchtype_checkout').datepicker({
onRender: function (date) {
return date.valueOf() <= checkin.date.valueOf() ? 'disabled' : '';
},
format: 'dd/mm/yyyy'
}).on('changeDate', function (ev) {
checkout.hide();
}).data('datepicker');
我从文档中获得了大部分代码。我刚刚做了一点改变。这里是我想应用的逻辑:
在签入时选择一个日期后,我希望在签入日期选择器中禁用此日期之前的所有日期,以避免签入前签出,并将焦点直接放在签入事件“changeDate”上的签出上
一切正常,但如果在我更改签入日期后,签入日期在第一次选择的日期之前,则不会再次调用签出函数onRender,并且之前在签出日期选择器上禁用的所有日期仍然被禁用
如何在签出日期选择器上再次调用onRender事件?我想在每次签入更改日期后调用此函数。您可以使用选择日期选择器上的选项,而不是现在使用的任何选项
var checkin = $('#searchtype_checkin').datepicker({
onRender: function (date) {
return date.valueOf() < now.valueOf() ? 'disabled' : '';
},
format: 'dd/mm/yyyy',
onSelect: function(selected) {
var date=new Date(selected)
day=date.getDate()+2;
newDate=date.getMonth()+1 + "/" + day + "/" + date.getFullYear();
$("#searchtype_checkout").datepicker("option","minDate", newDate);
}
});
编辑-您也可以将onSelect添加到签出日期,以便当用户首先选择签出日期时,签入日期中将禁用所有后续日期
var checkout = $('#searchtype_checkout').datepicker({
onRender: function (date) {
return date.valueOf() <= checkin.date.valueOf() ? 'disabled' : '';
},
format: 'dd/mm/yyyy'
onSelect: function(selected,inst) {
$("#searchtype_checkin").datepicker("option","maxDate", selected)
}
});
对不起,也许我没有很好地解释我想做什么。主要问题不是设置签出日期,而是动态禁用签入日期之前的签出日期。因此,您希望仅在“选定日期”中的签入日期之后启用签出日期吗?一切正常,但如果在我更改签入日期后,签入日期在第一次选定日期之前,不再调用onRender的签出函数,并且以前在签出日期选择器上禁用的所有日期仍然处于禁用状态。这就是你在问题中提到的,根据我的回答,它解决了你的问题。请具体说明或编辑问题!对不起,这个问题也很清楚。例如,如果我在签入时选择2015年1月5日,签出可用日期从2015年1月6日开始,这是我想要的,但是如果现在我将签入日期更改为2015年1月1日,签出可用日期仍然从2015年1月6日开始,这是不正确的,因为此时,我应该能够选择2015年1月3日作为示例。看到了吗?这就是为什么每次更改签入时,我都要求在签出时动态使用onRender方法。