Введение
Я использую плагин 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
? Или какое решение было бы лучшим?
Вы можете использовать объект многократного использования и просто расширять его с помощью уникальных настроек для каждого дампикера
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);
}
})
);
Если это глобальные настройки, которые должны применяться ко всем дампикерам, вы также можете установить их как глобальные
var defaults = {
changeMonth : true,
...etc
}
$.datepicker.setDefaults(defaults);
$.extend()
? Или хорошо применять только другие параметры непосредственно в экземпляре?