Локализовать средство выбора даты и времени Bootstrap для поддержки нескольких языков, но возвращать значение даты и времени sh после выбора? - PullRequest
0 голосов
/ 16 июня 2020

Приложение, над которым я работаю, поддерживает локализацию для нескольких языков, поэтому, когда я инициализирую datetimepicker в приложении, я передаю текущий используемый язык следующим образом:

datetimepicker({
    locale: languageObj.language,
    format: 'DD MMM YYYY',
    extraFormats: ['YYYY-MM-DD'],
    icons: {
        previous: 'btn-chevron-prev',
        next: 'btn-chevron-next',
    }
});

Однако, когда я получаю .val() этого ввода datetimepicker после того, как пользователь выбрал дату, значение также возвращается как переведенная дата и время. Я надеюсь визуализировать для пользователя переведенную версию средства выбора даты и времени, но вернуть английский sh, перевод выбранной даты по умолчанию, когда я получаю значение средства выбора даты и времени. Возможно ли это?

1 Ответ

0 голосов
/ 17 июня 2020

TL; DR, просто покажите мне код

Рабочий JSFiddle , показывающий 2 разных подхода.

Объяснение

Подход № 1

В документации описывается a date option :

Возвращает текущую дату модели компонента, объект момента или null, если не установлен.

Вверху той же страницы есть примечание о том, как использовать эти параметры:

Примечание. Доступ ко всем параметрам осуществляется через атрибут данных, например, $('#datetimepicker').data("DateTimePicker").OPTION()

Итак, где бы вы ни использовали .val(), например, может быть что-то вроде:

// Localised value, not what you want
var selectedDate = $('#datetimepicker').val(); 

Вместо этого используйте параметр date(). Помните, что date() возвращает моментный объект, поэтому вы можете отформатировать его как хотите, например YYYY-MM-DD:

var selectedDate = $('#datetimepicker').data("DateTimePicker").date().format('YYYY-MM-DD');

Подход # 2

В документах описывается событие dp.change :

Запускается при изменении даты ...

Параметры:

e = {
   date, //date the picker changed to. Type: moment object (clone)
   oldDate //previous date. Type: moment object (clone) or false in the event of a null
}

Таким образом, всякий раз, когда пользователь выбирает дату, мы можем использовать это событие, чтобы получить дату, которую он выбрал.

$('#datetimepicker').on('dp.change', function(e) {
    // We can now access e.date and e.oldDate, both moment objects
    var selectedDate = e.date.format('YYYY-MM-DD');

    // ... do something with selectedDate ...
});

Вы можете увидеть оба подхода в действии с пояснительными комментариями в JSFiddle .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...