使用bootstrap-datepicker预订1天

时间:2015-02-09 12:23:42

标签: javascript twitter-bootstrap datepicker

我一直在使用bootstrap-datepicker,运气不佳。我有以下代码但希望允许1天预订(即picker1 - 从2015年1月1日起和挑选者2 - 迄今为止01/01/15。目前它只允许我选择第二天选择初始起始日期之后的日期。

目前,1天预订被归类为24小时,超过2个日期(即2015年1月1日至2015年1月1日)将被归类为1天预订,并按1天的费率收费。

如何编辑下面的代码或Jatscripts for Bootstrap-Datepicker以允许1天的预订与日期相同?如果起始日期是第二天(即2015年1月1日至2015年1月1日)以2天的费率收费?

 var hire_from = null;
    var hire_to = null;

    var setPrice = function () {
        var oneDay = 24*60*60*1000;
        if (hire_from && hire_to) {
            var diffDays = Math.round(Math.abs((hire_from - hire_to)/(oneDay)));
            var price = diffDays*$("#enquiry_price").val();
            $("span#weekly_price").html("£ "+price.toFixed(0))
            var fee = price*$("#enquiry_discount").val()
            $("span#commission").html(fee.toFixed(0));
        }
    }


var initDatepickers = function(picker1, picker2){

            if($(picker1)[0] && $(picker2)[0]){
                var nowTemp = new Date();
                var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);

                var checkin = $(picker1).datepicker({
                  onRender: function(date) {
                    return date.valueOf() < now.valueOf() ? 'disabled' : '';
                  },
                  format: 'dd/mm/yyyy'
                }).on('changeDate', function(ev) {
                  var newDate = new Date(ev.date)
                  newDate.setDate(newDate.getDate());
                  checkout.setValue(newDate);
                  hire_from = newDate;
                  setPrice();
                  $.post('/enquiries/presave', {'hire_from': $.datepicker.formatDate('dd/mm/yy', hire_from), authenticity_token: window._token}, function(data){}, 'json');
                  checkin.hide();
                  $(picker2)[0].focus();
                }).data('datepicker');

                var checkout = $(picker2).datepicker({
                    onRender: function(date) {
                        return date.valueOf() <= checkin.date.valueOf() ? 'disabled' : '';
                    }, format: 'dd/mm/yyyy'
                }).on('changeDate', function(ev) {
                  checkout.hide();
                  var newDate = new Date(ev.date)
                  hire_to = newDate;
                  $.post('/enquiries/presave', {'hire_to': $.datepicker.formatDate('dd/mm/yy', hire_to), authenticity_token: window._token}, function(data){}, 'json');
                  setPrice();
                }).data('datepicker');
            }
        };

感谢您的投入和帮助。

1 个答案:

答案 0 :(得分:1)

尝试将picker2 onRender()设置为:

return date.valueOf() < checkin.date.valueOf() ? 'disabled' : '';

使第二个datepicker能够在同一天接受。

然后使用:

var diffDays = Math.ceil(Math.abs((hire_to - hire_from + 1) /(oneDay)));

将同一天结帐计算为一天的费用,第二天结帐为2天