Может ли Jquery DatePicker пользовательского интерфейса отображать дату в формате, отличающемся от даты форматирования, в которой изначально было сохранено? - PullRequest
0 голосов
/ 24 января 2020

У меня есть DatePicker, у которого установлен этот формат и который связан с текстовым полем на моей странице (ASP MVC Просмотр):

$(function () {
            $("#MyDateTextbox").datepicker({
                dateFormat: "dd-M-yy",
                showOn: "button",               
                buttonImage: "@Model.BaseURLOfSite" + "/Images/calendar.gif",
                buttonText: "Calendar"
            });
        });

Если текстовое поле изначально пустое, и Я выбираю дату в элементе управления, и дата сохраняется в отмеченном формате даты. Когда я снова нажимаю на свое текстовое поле, календарь открывается с сохраненной датой. Пример) "31-DE C -2020"

Однако, если в текстовом поле уже есть дата в формате, подобном "04/13/2020", значение, которое было сохранено в текстовом поле (и база данных) до того, как средство выбора было добавлено на страницу, когда я щелкаю значок средства выбора даты, связанный с текстовым полем, либо страница блокируется, либо средство выбора даты открывается с выделенной сегодняшней датой.

Новые даты, установленные и сохраненные с помощью элемента управления выбора даты: без проблем. Существующие даты (в другом формате), доступ к которым осуществляется с помощью элемента управления datapicker: существует вышеуказанная проблема.

1 Ответ

1 голос
/ 25 января 2020

Существует опция beforeShow с Datepicker, которую я использую для следующего решения, которое можно просмотреть здесь .

Для этого я взял существующее значение элемента ввода и преобразовать его в строку, которую может интерпретировать DatePicker, затем установить дату:

$(".datepicker").datepicker({
        dateFormat: "dd-M-yy",
        showOn: "button",               
        buttonText: "Calendar",
        beforeShow: function(ele, obj){

            // Current value
            var existing_date = $(ele).val();

            // If it contains a / then it's not formatted right
            if(existing_date.indexOf('/') > -1){

                // Using new Date and Date.parse gives us
                // Mon Apr 13 2020 00:00:00 GMT-0500 (Central Daylight Time)
                var new_date = new Date(Date.parse(existing_date));

                // Set the date
                $(ele).datepicker("setDate", new_date);

            }

        }
});

Я не уверен, что это лучший способ сделать это, но это начало. Надеюсь, это поможет!

...