$(function() {
var days = new Date();
var year = days.getFullYear();
//月 後ろから2桁の文字取得することで、1月は01、12月は12月になるようする。
var month = ("0"+(days.getMonth() + 1)).slice(-2);
//日 後ろから2桁の文字取得することで、1日は01、31日は31になるようする。
var date = ("0"+days.getDate()).slice(-2);
var today = year + "-" + month + "-" + date;//日付をフォーマット
var hours = days.getHours();//現在時間を取得
var num = hours - 8;//現在の時間から-8を格納
var selectItem = document.getElementById("reservation-time");
//初期は当日なので、現在の時間までのserectを選択不可に
if(hours < 14){
for(var i=0; i<num; i++){
selectItem.options[i].disabled = true;
}
}else{
for(var i=0; i<num-1; i++){
selectItem.options[i].disabled = true;
}
}
//フォームのご希望日カレンダー flatpickr
let minDate = new Date();
minDate = minDate.setDate(minDate.getDate() + 0);
//今日から3ヶ月後の日時
let maxDate = new Date();
maxDate = maxDate.setMonth(maxDate.getMonth() + 2);
//現在の日付を取得
flatpickr('#js-datepicker', {
locale: 'ja',
altInput: true,
altFormat: 'Y年n月j日',
dateFormat: 'Y-m-d',
defaultDate : minDate,
minDate : minDate,
maxDate : maxDate,
onChange: (selectedDates, dateStr, instance) => {//日時を変更したら発火
if( dateStr !== today ){//当日でなければ
for(var i=0; i<10; i++){//selectを選択可能に変更
selectItem.options[i].disabled = false;
}
}else if(hours < 14){
for(var i=0; i<num; i++){
selectItem.options[i].disabled = true;
}
}else{
for(var i=0; i<num-1; i++){
selectItem.options[i].disabled = true;
}
}
}
});
});
解説
var days = new Date();
var year = days.getFullYear();
//月 後ろから2桁の文字取得することで、1月は01、12月は12月になるようする。
var month = ("0"+(days.getMonth() + 1)).slice(-2);
//日 後ろから2桁の文字取得することで、1日は01、31日は31になるようする。
var date = ("0"+days.getDate()).slice(-2);
var today = year + "-" + month + "-" + date;//日付をフォーマット
var hours = days.getHours();//現在時間を取得
var num = hours - 8;//現在の時間から-8を格納