Диапазон DatePicker не позволяет дату выезда в тот же день - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь сделать дату заезда и выезда в тот же день, но это не позволяет мне сделать это.Пожалуйста, помогите мне сделать это.

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);
        }
    }
});

1 Ответ

0 голосов
/ 11 декабря 2018

Несколько раз в вашем коде вы устанавливаете minDate даты check_out_time в selectedDate.Однако selectedDate никогда не является действительной выбранной датой, а выбранной датой + 1 из-за следующей строки.

selectedDate.setDate(selectedDate.getDate()+1)

Изменение, которое должно позволить вам выбрать тот же день.

Я такжепредложить очистить весь повторяющийся код, у вас много поведения, которое повторяется несколько раз, и это мешает читать :) Вы можете переместить три строки в функцию и вызвать ее, вместо того, чтобы просто повторять в основном ту же логику втри места.

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);
}
...