Select Future Delivery Date:
window.onload = function() {
if (!window.jQuery) return;
let $ = window.jQuery;
// 1) List your blocked dates here (in YYYY-MM-DD format)
const blocked = ["2025-05-26","2025-07-04"];
// 2) Function to calculate dynamic minDate based on current day/time
function calculateMinDate() {
const now = new Date();
// Convert to Eastern Time
const easternTime = new Date(now.toLocaleString("en-US", {timeZone: "America/New_York"}));
const currentDay = easternTime.getDay(); // 0=Sunday, 1=Monday, ..., 6=Saturday
const currentHour = easternTime.getHours();
let minDate;
if (currentDay >= 1 && currentDay = 14) { // 2pm (14:00) or later
minDate = 3;
} else { // Before 2pm
minDate = 2;
}
} else if (currentDay === 4) { // Thursday
if (currentHour >= 14) { // 2pm or later on Thursday
// Next Tuesday is 5 days from Thursday (Thu->Fri->Sat->Sun->Mon->Tue)
minDate = 5;
} else { // Before 2pm on Thursday
// Next Monday is 4 days from Thursday (Thu->Fri->Sat->Sun->Mon)
minDate = 4;
}
} else if (currentDay === 5) { // Friday
// Next Tuesday is 4 days from Friday (Fri->Sat->Sun->Mon->Tue)
minDate = 4;
} else if (currentDay === 6) { // Saturday
// Next Tuesday is 3 days from Saturday (Sat->Sun->Mon->Tue)
minDate = 3;
} else { // Sunday (0)
// Next Tuesday is 2 days from Sunday (Sun->Mon->Tue)
minDate = 2;
}
return minDate;
}
// 3) Build a beforeShowDay function
function customDay(date) {
// format the date as "YYYY-MM-DD"
const y = date.getFullYear();
const m = ("0" + (date.getMonth() + 1)).slice(-2);
const d = ("0" + date.getDate()).slice(-2);
const str = `${y}-${m}-${d}`;
// a) block weekends:
const weekendResult = $.datepicker.noWeekends(date);
if (!weekendResult[0]) {
// [false] → disabled weekend
return weekendResult;
}
// b) block any dates in your list:
if (blocked.indexOf(str) !== -1) {
return [false, "", "Unavailable"];
}
// otherwise enable
return [true, ""];
}
// 4) Initialize datepicker with dynamic minDate
$(function() {
const initialMinDate = calculateMinDate();
$("#date").datepicker({
minDate: initialMinDate,
maxDate: "+12M",
beforeShowDay: customDay
});
// Update minDate every minute to handle time changes
setInterval(function() {
const newMinDate = calculateMinDate();
const currentMinDate = $("#date").datepicker("option", "minDate");
if (newMinDate !== currentMinDate) {
$("#date").datepicker("option", "minDate", newMinDate);
}
}, 60000); // Check every minute
});
};
Подробнее здесь: https://stackoverflow.com/questions/796 ... t-clicking