Javascript 再次初始化日期选择器引导程序

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

我尝试使用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({
        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方法。