$(function() { $.datepicker.setDefaults($.datepicker.regional["ja"]); function doSomething(element) { let selectedDate = $(element).data('datepicker-date'); if (!selectedDate) return; // 共通の処理:土日の判定 let dayOfWeek = selectedDate.getDay(); // 0:日, 6:土 let isWeekend = (dayOfWeek === 0 || dayOfWeek === 6); // クラス名から対象のselectを特定 let targetName = ""; if($(element).hasClass('day1')) targetName = "date-hope1-time"; if($(element).hasClass('day2')) targetName = "date-hope2-time"; if($(element).hasClass('day3')) targetName = "date-hope3-time"; if(targetName) { let $select = $('select[name="' + targetName + '"]'); $select.prop("selectedIndex", 0); // 時間帯をリセット // 土日なら「18時以降」を無効化 $select.find('option:last-child').prop('disabled', isWeekend); } // デバッグ表示用フォーマット var formattedDate = selectedDate.getFullYear() + '-' + ('0' + (selectedDate.getMonth() + 1)).slice(-2) + '-' + ('0' + selectedDate.getDate()).slice(-2); console.log("選択された日付 (" + targetName + "): " + formattedDate); } var numberOfMonths = (window.matchMedia && window.matchMedia('(max-device-width: 640px)').matches) ? 1 : 2; $(".date_hope").datepicker({ numberOfMonths: numberOfMonths, autoSize: true, firstDay: 0, dateFormat: 'yy/mm/dd', minDate: '2026/02/13', maxDate: '+3m', onSelect: function(dateText) { var parts = dateText.split('/'); var parsedDate = new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)); $(this).data('datepicker-date', parsedDate); doSomething(this); }, beforeShowDay : function(date) { var disableDates = [ "2025/04/22","2025/04/29","2025/05/03","2025/05/04","2025/05/05","2025/05/06","2025/05/27","2025/06/24","2025/07/21","2025/07/22","2025/08/11","2025/09/15","2025/09/23","2025/09/30","2025/10/13","2025/10/28","2025/11/03","2025/11/24","2025/12/29","2025/12/30","2025/12/31","2026/01/01","2026/01/02","2026/01/03","2026/01/12","2026/02/11","2026/02/23","2026/03/20","2026/04/29","2026/05/03","2026/05/04","2026/05/05","2026/05/06","2026/07/20","2026/08/10","2026/08/11","2026/09/21","2026/09/22","2026/09/23","2026/10/12","2026/11/03","2026/11/23","2026/12/28","2026/12/29","2026/12/30","2026/12/31","2027/01/01","2027/01/02","2027/01/03","2027/01/11","2027/02/11","2027/02/23","2027/03/22" ]; var formatted = $.datepicker.formatDate('yy/mm/dd', date); if (date.getDay() === 3) { // 水曜日休診 return [false, 'ui-state-disabled']; } return [(disableDates.indexOf(formatted) === -1), "", "診療日"]; } }); $('.date_hope').attr('readonly', true); });