允许使用 bootstrap-datepicker 预订 1 天
Allow 1 day booking with bootstrap-datepicker
我一直在使用 bootstrap-datepicker,但运气不佳。我有以下代码,但希望允许 1 天的预订(即 picker1 - 从日期 01/01/15 和 picker 2 - 到日期 01/01/15。目前它只允许我选择第二天选择初始起始日期后的截止日期。
目前 1 天的预订被归类为 24 小时,超过 2 个日期(即从 2015 年 1 月 1 日 - 15 年 1 月 2 日)将被归类为 1 天的预订并按第 1 天收费速度。
如何编辑下面的代码或 Bootstrap-Datepicker 的 Javascript 以允许 1 天的预订具有相同的往返日期?如果开始日期是第二天(即 2015 年 1 月 1 日 - 15 年 1 月 2 日),是否按 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');
}
};
感谢您的意见和帮助。
尝试将 picker2 onRender() 设置为:
return date.valueOf() < checkin.date.valueOf() ? 'disabled' : '';
使第二个日期选择器接受同一天。
然后使用:
var diffDays = Math.ceil(Math.abs((hire_to - hire_from + 1) /(oneDay)));
使当天结账算一天,次日结账算2天
我一直在使用 bootstrap-datepicker,但运气不佳。我有以下代码,但希望允许 1 天的预订(即 picker1 - 从日期 01/01/15 和 picker 2 - 到日期 01/01/15。目前它只允许我选择第二天选择初始起始日期后的截止日期。
目前 1 天的预订被归类为 24 小时,超过 2 个日期(即从 2015 年 1 月 1 日 - 15 年 1 月 2 日)将被归类为 1 天的预订并按第 1 天收费速度。
如何编辑下面的代码或 Bootstrap-Datepicker 的 Javascript 以允许 1 天的预订具有相同的往返日期?如果开始日期是第二天(即 2015 年 1 月 1 日 - 15 年 1 月 2 日),是否按 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');
}
};
感谢您的意见和帮助。
尝试将 picker2 onRender() 设置为:
return date.valueOf() < checkin.date.valueOf() ? 'disabled' : '';
使第二个日期选择器接受同一天。
然后使用:
var diffDays = Math.ceil(Math.abs((hire_to - hire_from + 1) /(oneDay)));
使当天结账算一天,次日结账算2天