/
Coderdev
/
web-static-labs
Обзор
Документация
Войти
/
Coderdev
/
web-static-labs
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
html/lab5/task1/script.js
70 строк
2 KB
Coderdev
1
26 мар 2026, 23:33
26 мар 2026, 23:33
6331fa1
Код
Авторство
О чём код?
const overlay = document.getElementById("overlay"); const modal = document.getElementById("modal"); const emailInput = document.getElementById("emailInput"); const errorText = document.getElementById("errorText"); const subscribeBtn = document.getElementById("subscribeBtn"); const closeBtn = document.getElementById("closeBtn"); const resultText = document.getElementById("resultText"); let isCompleted = false; let autoCloseTimer = null; // Показать окно через 7 секунд setTimeout(() => { if (!isCompleted) { overlay.classList.remove("hidden"); } }, 7000); function closeModalWithoutSuccess() { overlay.classList.add("hidden"); if (!isCompleted) { resultText.textContent = "Подписка не выполнена."; } } function isValidEmail(email) { return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email); } subscribeBtn.addEventListener("click", () => { const email = emailInput.value.trim(); emailInput.classList.remove("error"); errorText.textContent = ""; if (!isValidEmail(email)) { emailInput.classList.add("error"); errorText.textContent = "Укажите корректный e-mail."; return; } isCompleted = true; modal.innerHTML = ` <h2>Спасибо за подписку!</h2> <p>На Ваш адрес ${email} будет направлено письмо.</p> `; resultText.textContent = `Подписка выполнена на ${email}.`; autoCloseTimer = setTimeout(() => { overlay.classList.add("hidden"); }, 10000); }); closeBtn.addEventListener("click", () => { if (autoCloseTimer) { clearTimeout(autoCloseTimer); } closeModalWithoutSuccess(); }); document.addEventListener("keydown", (event) => { if (event.key === "Escape" && !overlay.classList.contains("hidden")) { if (autoCloseTimer) { clearTimeout(autoCloseTimer); } closeModalWithoutSuccess(); } });