Add address and sqft fields, fix altcha web component render

This commit is contained in:
2026-06-04 15:52:48 +01:00
parent c392fe7116
commit 6713a7e288
3 changed files with 45 additions and 58 deletions
+16 -43
View File
@@ -8,29 +8,19 @@ document.addEventListener('DOMContentLoaded', function() {
formLoadedAtInput.value = Date.now().toString();
}
// Initialize Altcha
const altchaElement = document.getElementById('altcha-widget');
if (altchaElement) {
window.altcha = new Altcha({
challengeUrl: '/altcha-challenge/',
element: altchaElement
});
}
// Form submit handler
if (form) {
form.addEventListener('submit', async function(e) {
e.preventDefault();
// Clear previous status messages
formStatusDiv.innerHTML = '';
formStatusDiv.className = '';
// Validate required fields
const name = form.elements['name']?.value.trim();
const email = form.elements['email']?.value.trim();
const name = form.elements['name']?.value.trim();
const email = form.elements['email']?.value.trim();
const address = form.elements['address']?.value.trim();
if (!name || !email) {
if (!name || !email || !address) {
formStatusDiv.className = 'form-status form-status--error';
formStatusDiv.innerHTML = '<p>Please fill in all required fields.</p>';
return;
@@ -42,39 +32,22 @@ document.addEventListener('DOMContentLoaded', function() {
return;
}
// Check honeypot
const honeypot = form.elements['website']?.value;
if (honeypot) {
formStatusDiv.className = 'form-status form-status--error';
formStatusDiv.innerHTML = '<p>Form validation failed.</p>';
return;
}
if (form.elements['website']?.value) return;
// Solve Altcha if available
let altchaPayload = '';
if (window.altcha && !window.altcha.didSubmit) {
try {
await window.altcha.solve();
altchaPayload = window.altcha.getFormData().altcha;
} catch (err) {
formStatusDiv.className = 'form-status form-status--error';
formStatusDiv.innerHTML = '<p>Spam check failed. Please try again.</p>';
return;
}
} else if (window.altcha) {
const formData = window.altcha.getFormData();
altchaPayload = formData.altcha || '';
}
// Get altcha value from the web component
const altchaWidget = document.getElementById('altcha-widget');
const altchaPayload = altchaWidget ? (altchaWidget.value || '') : '';
// Build JSON payload
const payload = {
name: form.elements['name'].value.trim(),
email: form.elements['email'].value.trim(),
phone: form.elements['phone']?.value.trim() || '',
message: form.elements['message']?.value.trim() || '',
website: form.elements['website']?.value || '',
name: name,
email: email,
phone: form.elements['phone']?.value.trim() || '',
address: address,
sqft: form.elements['sqft']?.value.trim() || '',
message: form.elements['message']?.value.trim() || '',
website: form.elements['website']?.value || '',
form_loaded_at: form.elements['form_loaded_at']?.value || '',
altcha: altchaPayload
altcha: altchaPayload
};
// POST to /contact/