Как установить время по умолчанию на Bootstrap DateTimePicker без инициализации значения? - PullRequest
0 голосов
/ 06 января 2020

HTML

                    <div class="row no-gutters mb-1">
                      <div class="col-6">
                        <div>
                            <label for="start_date" class="pl-0">Start Date/Time</label>
                            <div class="input-group date" >
                                <input type='text' class="datetimepicker form-control" name="start_date" id="start_date" data-target="#start_date" data-toggle="datetimepicker" data-type="datetimepicker" />
                                <div class="input-group-addon input-group-append" onclick="$('#start_date').click()">
                                    <div class="input-group-text"><i class="far fa-calendar-alt"></i></div>
                                </div>
                            </div>
                        </div>
                      </div>
                      <div class="col-6">
                        <div>
                            <label for="end_date" class="pl-0">End Date/Time</label>
                            <div class="input-group date" >
                                <input type='text' class="datetimepicker form-control" name="end_date" id="end_date"  data-toggle="datetimepicker" data-target="#end_date" data-type="datetimepicker" />
                                <div class="input-group-addon input-group-append" onclick="$('#end_date').click()">
                                    <div class="input-group-text"><i class="far fa-calendar-alt"></i></div>
                                </div>
                            </div>
                        </div>
                      </div>
                    </div>

Javascript

const dateFormat = "MM/DD/YYYY";
const endDateSelector = $("#end_date");
let lastPageNum = 0;
let previousPageNum = 1;

$.extend($.fn.datetimepicker.Constructor.Default, {
    icons: {
        time: 'far fa-clock',
        date: 'far fa-calendar',
        up: 'fas fa-arrow-up',
        down: 'fas fa-arrow-down',
        previous: 'fas fa-chevron-left',
        next: 'fas fa-chevron-right',
        today: 'far fa-calendar-check',
        clear: 'fas fa-trash',
        close: 'fas fa-times'
    }
});

function hideDateTimePicker() {
    $("#" + this.id).datetimepicker("hide");
}

$('#start_date').datetimepicker({
    format: "MM/DD/YYYY hh:mm A",
    keepOpen: false,
    useCurrent: false,
    keepInvalid: true,
    useStrict: true
});

endDateSelector.datetimepicker({
    format: "MM/DD/YYYY hh:mm A",
    keepOpen: false,
    useCurrent: false,
    keepInvalid: true,
    useStrict: true
});

$("#start_date, #end_date").on("focusout", hideDateTimePicker);

Проблема

Теперь мне нужно убедиться, что start_date и end_date не инициализируются, но в первый раз (и только потом) выбирается их дата, start_date будет иметь время в 00:00, а end_date будет иметь время в 23:59. Наиболее близким к этому поведению до сих пор было defaultDate: (new Date()).setHours(0, 0, 0, 0), но это фактически инициализирует значение. Я использую Bootstrap 4.3.1 и довольно много искал решение для такой простой функции, как определение времени по умолчанию для datetimepicker или установка его значения.

Если я установил значение для входа start_date, он будет корректно изменен, но при следующем изменении даты он не запомнит мое изменение и поместит текущее время в качестве значения.

Множество источников на inte rnet предполагали, что что-то вроде $("#start_date").data("DateTimePicker").date(somevalue) должно работать, но $("#start_date").data("DateTimePicker") возвращает неопределенное значение. Другие источники утверждали, что что-то вроде $("#start_date").datetimepicker("update", new Date()) должно работать, но я получаю ошибку

Ошибка: нет метода с именем "update"

Итак, как я могу иметь время по умолчанию без инициализации значения?

...