JQuery Calendar Date Picker - показать календарь без нажатияJquery

Программирование на jquery
Ответить Пред. темаСлед. тема
Anonymous
 JQuery Calendar Date Picker - показать календарь без нажатия

Сообщение Anonymous »


Изображение




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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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