Spaces:
Running
Running
Update index.html
Browse files- index.html +18 -9
index.html
CHANGED
@@ -90,6 +90,9 @@
|
|
90 |
// --- CONFIGURATION ---
|
91 |
const WORKER_URL = 'https://contact-form-api.aiagents.workers.dev/';
|
92 |
|
|
|
|
|
|
|
93 |
// --- ELEMENTS ---
|
94 |
const togglePanelBtn = document.getElementById('togglePanel');
|
95 |
const floatingPanel = document.getElementById('floatingPanel');
|
@@ -113,18 +116,24 @@
|
|
113 |
closePanelBtn.addEventListener('click', hidePanel);
|
114 |
closeSuccessBtn.addEventListener('click', () => {
|
115 |
hidePanel();
|
116 |
-
// Reset form for next time
|
117 |
setTimeout(() => {
|
118 |
formContainer.classList.remove('hidden');
|
119 |
successMessage.classList.add('hidden');
|
120 |
interestForm.reset();
|
121 |
-
}, 300);
|
122 |
});
|
123 |
|
124 |
interestForm.addEventListener('submit', async (e) => {
|
125 |
e.preventDefault();
|
126 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
submitButton.disabled = true;
|
|
|
128 |
|
129 |
const uniqueId = generateUniqueId();
|
130 |
const name = document.getElementById('name').value;
|
@@ -138,22 +147,22 @@
|
|
138 |
});
|
139 |
|
140 |
if (!response.ok) {
|
141 |
-
const
|
142 |
-
throw new Error(
|
143 |
}
|
144 |
|
145 |
-
// Show success message
|
146 |
uniqueIDDisplay.textContent = uniqueId;
|
147 |
formContainer.classList.add('hidden');
|
148 |
successMessage.classList.remove('hidden');
|
149 |
|
150 |
} catch (error) {
|
151 |
console.error('Error submitting form:', error);
|
152 |
-
alert(`There was an error: ${error.message}
|
153 |
} finally {
|
154 |
-
//
|
155 |
-
|
156 |
submitButton.disabled = false;
|
|
|
157 |
}
|
158 |
});
|
159 |
});
|
|
|
90 |
// --- CONFIGURATION ---
|
91 |
const WORKER_URL = 'https://contact-form-api.aiagents.workers.dev/';
|
92 |
|
93 |
+
// --- STATE ---
|
94 |
+
let isSubmitting = false;
|
95 |
+
|
96 |
// --- ELEMENTS ---
|
97 |
const togglePanelBtn = document.getElementById('togglePanel');
|
98 |
const floatingPanel = document.getElementById('floatingPanel');
|
|
|
116 |
closePanelBtn.addEventListener('click', hidePanel);
|
117 |
closeSuccessBtn.addEventListener('click', () => {
|
118 |
hidePanel();
|
|
|
119 |
setTimeout(() => {
|
120 |
formContainer.classList.remove('hidden');
|
121 |
successMessage.classList.add('hidden');
|
122 |
interestForm.reset();
|
123 |
+
}, 300);
|
124 |
});
|
125 |
|
126 |
interestForm.addEventListener('submit', async (e) => {
|
127 |
e.preventDefault();
|
128 |
+
|
129 |
+
// ** THE FIX IS HERE: If a submission is already happening, do nothing. **
|
130 |
+
if (isSubmitting) {
|
131 |
+
return;
|
132 |
+
}
|
133 |
+
|
134 |
+
isSubmitting = true;
|
135 |
submitButton.disabled = true;
|
136 |
+
buttonText.textContent = 'Submitting...';
|
137 |
|
138 |
const uniqueId = generateUniqueId();
|
139 |
const name = document.getElementById('name').value;
|
|
|
147 |
});
|
148 |
|
149 |
if (!response.ok) {
|
150 |
+
const errorData = await response.json();
|
151 |
+
throw new Error(errorData.error || 'Submission failed');
|
152 |
}
|
153 |
|
|
|
154 |
uniqueIDDisplay.textContent = uniqueId;
|
155 |
formContainer.classList.add('hidden');
|
156 |
successMessage.classList.remove('hidden');
|
157 |
|
158 |
} catch (error) {
|
159 |
console.error('Error submitting form:', error);
|
160 |
+
alert(`There was an error: ${error.message}`);
|
161 |
} finally {
|
162 |
+
// Re-enable the form for a new submission later
|
163 |
+
isSubmitting = false;
|
164 |
submitButton.disabled = false;
|
165 |
+
buttonText.textContent = 'Generate Unique ID';
|
166 |
}
|
167 |
});
|
168 |
});
|