47 lines
1.4 KiB
JavaScript
47 lines
1.4 KiB
JavaScript
(() => {
|
||
const contactForm = document.getElementById('contactForm')
|
||
const contactSuccess = document.getElementById('contactSuccess')
|
||
const formConfig = window.test1ContactsForm || null
|
||
|
||
if (!contactForm || !contactSuccess) {
|
||
return
|
||
}
|
||
|
||
contactForm.addEventListener('submit', async event => {
|
||
event.preventDefault()
|
||
|
||
if (!formConfig?.ajaxUrl || !formConfig?.action || !formConfig?.nonce) {
|
||
window.alert('Форма временно недоступна. Обновите страницу и попробуйте снова.')
|
||
return
|
||
}
|
||
|
||
const formData = new window.FormData(contactForm)
|
||
formData.append('action', formConfig.action)
|
||
formData.append('nonce', formConfig.nonce)
|
||
formData.append('form_type', 'contacts')
|
||
|
||
try {
|
||
const response = await window.fetch(formConfig.ajaxUrl, {
|
||
method: 'POST',
|
||
credentials: 'same-origin',
|
||
body: formData,
|
||
})
|
||
|
||
const payload = await response.json().catch(() => null)
|
||
|
||
if (!response.ok || !payload?.success) {
|
||
throw new Error('submit_failed')
|
||
}
|
||
|
||
contactSuccess.classList.add('visible')
|
||
|
||
setTimeout(() => {
|
||
contactForm.reset()
|
||
contactSuccess.classList.remove('visible')
|
||
}, 2200)
|
||
} catch (error) {
|
||
window.alert('Не удалось отправить заявку. Попробуйте еще раз.')
|
||
}
|
||
})
|
||
})()
|