50 lines
1.6 KiB
JavaScript
50 lines
1.6 KiB
JavaScript
function initFormHandling() {
|
|
const form = document.getElementById('contact-form');
|
|
if (!form) return;
|
|
|
|
form.addEventListener('submit', async (e) => {
|
|
e.preventDefault();
|
|
|
|
const submitBtn = form.querySelector('button[type="submit"]');
|
|
const originalBtnText = submitBtn.innerHTML;
|
|
submitBtn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Sending...';
|
|
submitBtn.disabled = true;
|
|
|
|
const formData = new FormData(form);
|
|
const data = {
|
|
name: formData.get('name'),
|
|
email: formData.get('email'),
|
|
subject: formData.get('subject'),
|
|
message: formData.get('message')
|
|
};
|
|
|
|
try {
|
|
const response = await fetch('/api/send-email', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json'
|
|
},
|
|
body: JSON.stringify(data)
|
|
});
|
|
|
|
const result = await response.json();
|
|
|
|
if (!response.ok) {
|
|
throw new Error(result.details || result.error || 'Failed to send message');
|
|
}
|
|
|
|
// Show success message
|
|
showAlert('success', 'Message sent successfully! I will get back to you soon.');
|
|
form.reset();
|
|
|
|
} catch (error) {
|
|
console.error('Form submission error:', error);
|
|
showAlert('error', `Something went wrong: ${error.message}`);
|
|
} finally {
|
|
submitBtn.innerHTML = originalBtnText;
|
|
submitBtn.disabled = false;
|
|
}
|
|
});
|
|
}
|
|
|
|
// ... existing code ...
|