flatpickr - Выбор диапозона дат кнопкой
Календарь https://flatpickr.js.org/
Плагин дополнительных кнопок https://github.com/jcsmorais/shortcut-buttons-flatpickr
flatpickr(".flatpickr-input", {
"locale": "ru",
"mode": "multiple",
"showMonths": "3",
"dateFormat": "d.m.Y",
plugins: [
ShortcutButtonsPlugin({
button: [
{
label: "Последние 7 дней"
},
{
label: "Текущий месяц"
},
{
label: "Прошлый месяц"
}
],
label: "",
onClick: (index, fp) => {
let date;
switch (index) {
case 0:
date = new Date(Date.now() - 24 * 60 * 60 * 1000);
date = new Date(Date.now() - 24 * 60 * 60 * 2000);
break;
case 1:
date = new Date();
break;
case 2:
date = new Date(Date.now() + 24 * 60 * 60 * 1000);
break;
}
fp.setDate(date);
}
})
]
});
Подскажите как заставить кнопку выбрать 7 дней, месяц как на скрине https://skr.sh/s35lTNVtOwB
Ответы (1 шт):
Автор решения: user397526
→ Ссылка
$(document).ready(function(){
flatpickr(".flatpickr-input", {
locale: "ru",
mode: "multiple",
showMonths: 3,
dateFormat: "d.m.Y",
plugins: [
ShortcutButtonsPlugin({
button: [
{
label: "Последние 7 дней"
},
{
label: "Последние 30 дней"
},
{
label: "Текущий месяц"
},
{
label: "Прошлый месяц"
},
{
label: "Последний год"
},
{
label: "Применить"
}
],
label: "",
onClick: (index, fp) => {
let date;
switch (index) {
// Последние 7 дней
case 0:
var arr = [];
var i = 0;
while (i < 7000) {
i = i + 1000;
arr.push(new Date(Date.now() - 24 * 60 * 60 * i));
date = arr;
}
break;
// Последние 30 дней
case 1:
var arr = [];
var i = 0;
while (i < 30000) {
i = i + 1000;
arr.push(new Date(Date.now() - 24 * 60 * 60 * i));
date = arr;
}
break;
// Текущий месяц
case 2:
Date.prototype.daysInMonth = function() {
return 33 - new Date(this.getFullYear(), this.getMonth(), 33).getDate();
};
var days = new Date().daysInMonth(); // Кол-во дней
var today = new Date(); // Сегодня
//var firstDayOfMonth = new Date(today.getFullYear(), today.getMonth(), 1); // Первый день
//var lastDayOfMonth = new Date(today.getFullYear(), today.getMonth()+1, 0); // Последниый день
var arr = [];
var i = 0;
while (i < days) {
i = i + 1;
var firstDayOfMonth = new Date(today.getFullYear(), today.getMonth(), i); // Первый день
arr.push(firstDayOfMonth);
date = arr;
}
break;
// Прошлый месяц
case 3:
Date.prototype.daysInMonth = function() {
return 33 - new Date(this.getFullYear(), this.getMonth(), 33).getDate();
};
var days = new Date().daysInMonth() - 1; // Кол-во дней
var today = new Date(); // Сегодня
var firstDayOfMonth = new Date(today.getFullYear(), today.getMonth() - 1, 1); // Первый день
var arr = [];
var i = 0;
while (i < days) {
i = i + 1;
var firstDayOfMonth = new Date(today.getFullYear(), today.getMonth() - 1, i); // Первый день
arr.push(firstDayOfMonth);
date = arr;
}
break;
// Последний год
case 4:
var arr = [];
var i = 0;
while (i < 365000) {
i = i + 1000;
arr.push(new Date(Date.now() - 24 * 60 * 60 * i));
date = arr;
}
break;
// Применить
case 5:
break;
}
fp.setDate(date);
}
})
]
});
});