Уменьшите повторение логического шаблона для minDate и maxDate из Bootstrap DateTimePicker.Javascript

Форум по Javascript
Ответить
Anonymous
 Уменьшите повторение логического шаблона для minDate и maxDate из Bootstrap DateTimePicker.

Сообщение Anonymous »

Следующий логический шаблон повторяется несколько раз:

Код: Выделить всё

$("#dt_start").on("dp.change", function (e) {
$('#dt_end').data("DateTimePicker").minDate(e.date);
});

$("#dt_end").on("dp.change", function (e) {
$('#dt_start').data("DateTimePicker").maxDate(e.date);
});
После обнаружения этого шаблона я попробовал сопоставить его следующим образом:

Код: Выделить всё

const pairsOfDates = [
{
start: 'dt_start',
end: 'dt_end'
},
{
start: 'dt_start_edit',
end: 'dt_end_edit'
}
// among others...
]
Поэтому у него будет forEach для перебора каждой позиции и монтирования прослушивателей jQuery:

Код: Выделить всё

pairsOfDates.forEach(function (config) {

// Listener for start date
$('#' + config.start).on("dp.change", function (e) {
updatesDeadlines(e, config.start, config.end, false);
});

// Listenor for end date
$('#' + config.end).on("dp.change", function (e) {
updatesDeadlines(e, config.start, config.end, true);
});
});
И, наконец, функция updateDeadlines:

Код: Выделить всё

function updatesDeadlines(e, idStart, idEnd, isMaxDate) {
if (!e.date) return;

if (isMaxDate) {
$('#' + idStart).data("DateTimePicker").maxDate(e.date);
} else {
$('#' + idEnd).data("DateTimePicker").minDate(e.date);
}
}
Это сработало, как я и ожидал, но я по-прежнему считаю, что использование этого сопоставления может быть не самым эффективным и подходящим способом или даже может затруднить его поддержку в будущем.
Так как же я могу уменьшить повторение этого шаблона? Или лучше всего использовать картографирование? Или оставить все как есть?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ap-datetim
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»