那些仍在尋找有關如何禁用過去日期單擊DateclickFullCalendar 事件的解決方案的人。可以嘗試查看下面的解決方案,如果任何讀者有其他想法可以在下面發布其他解決方案。如果有另一種簡單的方法會更好。解決方案越多越好。
uj5u.com熱心網友回復:
通過進行如下簡單的比較,可以改進日期的字串操作:
dateClick: function (info) {
var clickedDate = getDateWithoutTime(info.date);
var nowDate = getDateWithoutTime(new Date())
if (clickedDate >= nowDate) alert("Future date");
else alert("Past date");
}
這個功能有幫助:
//get date without the time of day
function getDateWithoutTime(dt)
{
dt.setHours(0,0,0,0);
return dt;
}
演示:https ://codepen.io/ADyson82/pen/ZErwJGx
實作相同目標的另一種選擇是使用validRange功能。這使您可以動態設定開始日期,在此之前禁用所有日期:
validRange: function (nowDate) {
return {
start: nowDate
};
},
演示:https ://codepen.io/ADyson82/pen/VwQgWJO
這樣做的輕微缺點是它還隱藏了在當前日期之前發生的任何事件 - 你可能不想要這個。
因此,另一種選擇是使用selectAllow來限制用戶可以選擇的位置。請注意,這取決于您使用select回呼而不是dateClick- 但這應該不是一個大問題。
selectAllow: function (info) {
return (info.start >= getDateWithoutTime(new Date()));
}
演示:https ://codepen.io/ADyson82/pen/VwQgzZJ
uj5u.com熱心網友回復:
以下是我目前在 FullCalendar 上禁用過去日期的解決方案。任何想法或改進將不勝感激改進下面的代碼。
dateClick: function(e) {
// Get Today
var dt = calendar.getDate();
var year = dt.getFullYear();
var month = dt.getMonth() 1;
var day = dt.getDate();
if(month < 9){
month = '0' month;
}
if(day < 9){
day = '0' day;
}
var today = year '-' month '-' day;
// Get Selected Date
var check = e.dateStr;
let A = today.toString();
let B = check.toString();
alert('Date A: ' A );
alert('Date B: ' B );
if(B >= A){
alert('Past Date');
}
else{
alert('Future Date');
}
},
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/492079.html
標籤:javascript 日期 全日历 fullcalendar-5
下一篇:用于回傳年終日期的VBA函式
