Тест
Стоимость:0руб.
Test
1
р.
date
time
// gpt4 полностью рабочий код но можно выбрать неправильное время если переключить на день вперед и обратно function formatDate(date) { let parsedDate; if (typeof date === 'string') { let dateParts = date.split('-'); parsedDate = new Date(dateParts[0], dateParts[1] - 1, dateParts[2]); } else { parsedDate = date; } let day = parsedDate.getDate(); let month = parsedDate.getMonth() + 1; let year = parsedDate.getFullYear(); if (day < 10) { day = '0' + day; } if (month < 10) { month = '0' + month; } return [year, month, day].join('-'); // Исправлен формат даты с дд-мм-гггг на гггг-мм-дд } document.addEventListener('DOMContentLoaded', function () { const hoursToAdd = 5; let currentDateTime = new Date(); currentDateTime.setHours(currentDateTime.getHours() + hoursToAdd); let attrDate = formatDate(currentDateTime); console.log('currentDateTime:', currentDateTime); console.log('attrDate:', attrDate); const dateInput = document.querySelector('#input_1495722502842'); const timeInput = document.querySelector('#input_1495722666746'); console.log('dateInput:', dateInput); console.log('timeInput:', timeInput); if (dateInput && timeInput) { function updateSelectOptions(selectedDate) { console.log('updateSelectOptions called with selectedDate:', selectedDate); const formattedDate = formatDate(selectedDate); console.log('formattedDate:', formattedDate); let currentTime = currentDateTime.getHours() % 24; let selectedDateTime = new Date(formattedDate); let timeOptions = timeInput.querySelectorAll('option'); let firstAvailableOption = null; timeOptions.forEach((option) => { let optionTime = parseInt(option.value.split(':')[0]); if (selectedDateTime.toDateString() === currentDateTime.toDateString()) { if (optionTime <= currentTime) { option.disabled = true; console.log('option disabled:', option.value); } else { option.disabled = false; console.log('option enabled:', option.value); if (!firstAvailableOption) firstAvailableOption = option; } } else { option.disabled = false; console.log('option enabled:', option.value); if (!firstAvailableOption) firstAvailableOption = option; } }); // Если текущее выбранное время недоступно, устанавливаем время на первое доступное if (firstAvailableOption && (timeInput.value === "" || timeInput.querySelector('option:checked').disabled)) { timeInput.value = firstAvailableOption.value; console.log('Time automatically set to first available option:', firstAvailableOption.value); } } dateInput.addEventListener('change', () => { console.log('dateInput change event'); const selectedDate = dateInput.value; updateSelectOptions(new Date(selectedDate)); }); timeInput.addEventListener('click', () => { console.log('timeInput click event'); const selectedDate = dateInput.value; if (selectedDate) { updateSelectOptions(new Date(selectedDate)); } else { console.log('Selected date not found'); } }); // При инициализации устанавливаем дефолтные значения для даты и времени, если они еще не установлены if (!dateInput.value) { dateInput.value = attrDate; // Установка сегодняшней даты } if (!timeInput.value) { updateSelectOptions(new Date(attrDate)); // Обновление доступного времени для выбранной даты } } });