-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
63 lines (52 loc) · 2.06 KB
/
Copy pathscript.js
File metadata and controls
63 lines (52 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// ===== Mobile nav toggle =====
(function mobileNav(){
const burger = document.querySelector('.burger');
const nav = document.querySelector('.main-nav');
if(!burger || !nav) return;
burger.addEventListener('click', () => {
const isOpen = nav.classList.toggle('is-open');
burger.setAttribute('aria-expanded', String(isOpen));
});
nav.querySelectorAll('a').forEach(a => {
a.addEventListener('click', () => {
nav.classList.remove('is-open');
burger.setAttribute('aria-expanded', 'false');
});
});
})();
// ===== Contact form: validation + optional backend =====
(function contactForm(){
const form = document.getElementById('contactForm');
if(!form) return;
// Замените на реальный endpoint отправки (Formspree, Telegram-бот, свой API и т.п.)
const FORM_ENDPOINT = 'https://formspree.io/f/YOUR_FORM_ID';
const setState = (btn, text, disabled) => {
btn.textContent = text;
btn.disabled = disabled;
};
form.addEventListener('submit', async (e) => {
e.preventDefault();
const btn = form.querySelector('button[type="submit"]');
const original = btn.textContent;
const phoneDigits = form.phone.value.replace(/[^0-9+]/g, '');
if(phoneDigits.length < 10){
alert('Пожалуйста, укажите корректный номер телефона.');
return;
}
setState(btn, 'Отправка…', true);
try{
const res = await fetch(FORM_ENDPOINT, {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
body: JSON.stringify(Object.fromEntries(new FormData(form)))
});
if(!res.ok) throw new Error('Request failed');
form.reset();
setState(btn, 'Заявка отправлена ✓', true);
setTimeout(() => setState(btn, original, false), 2600);
}catch(err){
setState(btn, original, false);
alert('Не удалось отправить заявку. Попробуйте ещё раз или позвоните нам.');
}
});
})();