Формат кода даты выбора пользователя

0

Введение

Я использую плагин jQuery datepicker в одном из моих приложений. На одной странице есть несколько элементов input которые содержат экземпляр плагина datepicker.

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

пример

Первый элемент:

$("input[id*=txtEmployeeBirthDate]").datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: "dd-mm-yy",
    showAnim: "slideDown",
    dayNamesMin: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za"],
    monthNamesShort: ["jan", "feb", "mar", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"],
    yearRange: "1900:2050",
    onSelect: function (dateText, inst) { 
        $("input[id$=hdnBirthDate]").val(dateText); 
    }
});

Второй элемент:

$("input[id*=txtHolidayDate]").datepicker({
    changeMonth: false,
    changeYear: false,
    dateFormat: "dd-mm-yy",
    showAnim: "slideDown",
    dayNamesMin: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za"],
    monthNamesShort: ["jan", "feb", "mar", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"],
    monthNames: ["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"],
    yearRange: _y + ":" + _y, // _y is a private variable which contains the current year
    onSelect: function (dateText, inst) {
        $("input[id$=hdnHolidayDate]").val(dateText); 
    }
});

проблема

Проблема в том, что у меня более 5 различных экземпляров плагина datepicker. И я хотел бы форматировать или dateFormat код, потому что некоторые свойства, такие как dateFormat и monthNamesShort, всегда одинаковы.

Вопрос

Это их способ сделать это? Переопределить datepicker? Или какое решение было бы лучшим?

  • 2
    Если каждый DatePicker должен быть инициализирован по-другому, чем вы должны инициализировать их по-разному. Вы можете сделать такие вещи, как создание переменной для хранения массива месяца (или чего-либо общего для всех средств выбора даты) и передать эту переменную в инициализацию средства выбора даты, чтобы вам не приходилось копировать ее каждый раз при внесении изменений.
Теги:
datepicker

1 ответ

2
Лучший ответ

Вы можете использовать объект многократного использования и просто расширять его с помощью уникальных настроек для каждого дампикера

var settings = {
    changeMonth     : true,
    changeYear      : true,
    dateFormat      : "dd-mm-yy",
    showAnim        : "slideDown",
    dayNamesMin     : ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za"],
    monthNamesShort : ["jan", "feb", "mar", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"]
}

$("input[id*=txtEmployeeBirthDate]").datepicker(
    $.extend(settings, {
        yearRange: "1900:2050",
        onSelect: function (dateText, inst) { 
            $("input[id$=hdnBirthDate]").val(dateText); 
        }
    })
);

$("input[id*=txtHolidayDate]").datepicker(
    $.extend(settings, {
        yearRange: _y + ":" + _y,
        onSelect: function (dateText, inst) {
            $("input[id$=hdnHolidayDate]").val(dateText); 
        }
    })
);

FIDDLE

Если это глобальные настройки, которые должны применяться ко всем дампикерам, вы также можете установить их как глобальные

var defaults = {
    changeMonth     : true,
    ...etc
}

$.datepicker.setDefaults(defaults);

FIDDLE

  • 0
    Используя глобальные настройки, вам все еще нужно использовать метод $.extend() ? Или хорошо применять только другие параметры непосредственно в экземпляре?
  • 0
    хорошо, я вижу вашу скрипку сейчас, спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню