Datepicker 范围不允许退房日期为同一天
Datepicker range don't allow the check out date to same day
我想在同一天登记入住和退房日期,但它不允许我这样做。请帮我做一下。
var ajax_check_var = '';
$('.location_search_results_ul').hide();
$("#check_in_time").datepicker({
showOtherMonths: true,
dateFormat: 'dd-mm-yy',
minDate: 0,
//for calender Css
beforeShowDay: function (date) {
return highlightDateBorder($("#check_in_time").val(), date);
},
onSelect: function(selectedDate) {
var date_format = selectedDate.split("-");
var selectedDate = new Date($.datepicker.formatDate('yy-mm-dd', new Date(date_format[2], date_format[1] - 1, date_format[0])));
selectedDate.setDate(selectedDate.getDate() + 1);
$("#check_out_time").datepicker("option", "minDate", selectedDate);
},
});
$("#check_out_time").datepicker({
showOtherMonths: true,
dateFormat: 'dd-mm-yy',
//for calender Css
beforeShowDay: function (date) {
return highlightDateBorder($("#check_out_time").val(), date);
},
beforeShow: function (input, instance) {
var date_to = $('#check_in_time').val();
if (typeof date_to != 'undefined' && date_to != '') {
var date_format = date_to.split("-");
var selectedDate = new Date($.datepicker.formatDate('yy-mm-dd', new Date(date_format[2], date_format[1] - 1, date_format[0])));
selectedDate.setDate(selectedDate.getDate()+1);
$("#check_out_time").datepicker("option", "minDate", selectedDate);
} else {
var date_format = new Date();
var selectedDate = new Date($.datepicker.formatDate('yy-mm-dd', new Date()));
selectedDate.setDate(selectedDate.getDate()+1);
$("#check_out_time").datepicker("option", "minDate", selectedDate);
}
}
});
在您的代码中多次将 check_out_time
日期选择器的 minDate
设置为 selectedDate
。但是 selectedDate
从来都不是实际的 selected 日期,而是 selected 日期 + 1 因为以下行。
selectedDate.setDate(selectedDate.getDate()+1)
改变它应该可以让你在同一天select。
我还建议清理所有重复的代码,你有很多重复几次的行为,这让阅读变得一团糟:)
您可以将三行移动到一个函数并调用它,而不是仅仅在三个地方重复基本相同的逻辑。
const date_format = selectedDate.split("-");
setMinData(new Date(date_format[2], date_format[1] - 1, date_format[0]));
function setMinDate(date) {
var selectedDate = new Date($.datepicker.formatDate('yy-mm-dd', date));
selectedDate.setDate(selectedDate.getDate() + 1);
$("#check_out_time").datepicker("option", "minDate", selectedDate);
}
我想在同一天登记入住和退房日期,但它不允许我这样做。请帮我做一下。
var ajax_check_var = '';
$('.location_search_results_ul').hide();
$("#check_in_time").datepicker({
showOtherMonths: true,
dateFormat: 'dd-mm-yy',
minDate: 0,
//for calender Css
beforeShowDay: function (date) {
return highlightDateBorder($("#check_in_time").val(), date);
},
onSelect: function(selectedDate) {
var date_format = selectedDate.split("-");
var selectedDate = new Date($.datepicker.formatDate('yy-mm-dd', new Date(date_format[2], date_format[1] - 1, date_format[0])));
selectedDate.setDate(selectedDate.getDate() + 1);
$("#check_out_time").datepicker("option", "minDate", selectedDate);
},
});
$("#check_out_time").datepicker({
showOtherMonths: true,
dateFormat: 'dd-mm-yy',
//for calender Css
beforeShowDay: function (date) {
return highlightDateBorder($("#check_out_time").val(), date);
},
beforeShow: function (input, instance) {
var date_to = $('#check_in_time').val();
if (typeof date_to != 'undefined' && date_to != '') {
var date_format = date_to.split("-");
var selectedDate = new Date($.datepicker.formatDate('yy-mm-dd', new Date(date_format[2], date_format[1] - 1, date_format[0])));
selectedDate.setDate(selectedDate.getDate()+1);
$("#check_out_time").datepicker("option", "minDate", selectedDate);
} else {
var date_format = new Date();
var selectedDate = new Date($.datepicker.formatDate('yy-mm-dd', new Date()));
selectedDate.setDate(selectedDate.getDate()+1);
$("#check_out_time").datepicker("option", "minDate", selectedDate);
}
}
});
在您的代码中多次将 check_out_time
日期选择器的 minDate
设置为 selectedDate
。但是 selectedDate
从来都不是实际的 selected 日期,而是 selected 日期 + 1 因为以下行。
selectedDate.setDate(selectedDate.getDate()+1)
改变它应该可以让你在同一天select。
我还建议清理所有重复的代码,你有很多重复几次的行为,这让阅读变得一团糟:) 您可以将三行移动到一个函数并调用它,而不是仅仅在三个地方重复基本相同的逻辑。
const date_format = selectedDate.split("-");
setMinData(new Date(date_format[2], date_format[1] - 1, date_format[0]));
function setMinDate(date) {
var selectedDate = new Date($.datepicker.formatDate('yy-mm-dd', date));
selectedDate.setDate(selectedDate.getDate() + 1);
$("#check_out_time").datepicker("option", "minDate", selectedDate);
}