Skip to content

Commit 925b389

Browse files
authored
Merge pull request #2897 from codeeu/dev
Dev
2 parents 34be8ed + acc15f9 commit 925b389

1 file changed

Lines changed: 39 additions & 36 deletions

File tree

resources/views/static/contact-us.blade.php

Lines changed: 39 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -174,9 +174,9 @@ class="w-8 h-8 bg-white rounded-lg border-2 border-blue-800 text-primary focus:r
174174
</span>
175175
</label>
176176

177-
<!-- CAPTCHA -->
178-
<div class="flex justify-center mt-6">
177+
<div class="flex justify-center mt-6">
179178
<div class="cf-turnstile" data-sitekey="{{ env('TURNSTILE_SITEKEY') }}"></div>
179+
<input type="hidden" id="cf-turnstile-response" name="cf-turnstile-response" />
180180
</div>
181181

182182
<!-- Submit -->
@@ -190,48 +190,51 @@ class="flex gap-2 items-center px-8 py-4 text-base font-semibold leading-7 text-
190190
</div>
191191
</div>
192192

193-
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js?onload=turnstileCallback" async defer></script>
194-
<script>
195-
document.addEventListener('DOMContentLoaded', function() {
196-
const form = document.getElementById('contactForm');
197-
const submitButton = document.getElementById('submitButton');
198-
const requiredFields = form.querySelectorAll('[required]');
199-
200-
function validateForm() {
201-
let allFilled = true;
202-
requiredFields.forEach(field => {
203-
if ((field.type === 'checkbox' && !field.checked) ||
204-
(field.tagName === 'SELECT' && !field.value) ||
205-
((field.tagName === 'INPUT' || field.tagName === 'TEXTAREA') && !field.value.trim())) {
206-
allFilled = false;
207-
}
208-
});
209-
210-
submitButton.disabled = !allFilled;
211-
submitButton.classList.toggle('bg-primary', allFilled);
212-
submitButton.classList.toggle('hover:bg-hover-orange', allFilled);
213-
submitButton.classList.toggle('cursor-pointer', allFilled);
214-
submitButton.classList.toggle('cursor-not-allowed', !allFilled);
215-
submitButton.classList.toggle('bg-gray-300', !allFilled);
216-
submitButton.classList.toggle('text-gray-500', !allFilled);
217-
submitButton.classList.toggle('text-black', allFilled);
193+
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
194+
195+
<script>
196+
document.addEventListener('DOMContentLoaded', function () {
197+
const form = document.getElementById('contactForm');
198+
const submitButton = document.getElementById('submitButton');
199+
const requiredFields = form.querySelectorAll('[required]');
200+
const captchaInput = document.getElementById('cf-turnstile-response');
201+
202+
function validateForm() {
203+
let allValid = true;
204+
requiredFields.forEach(field => {
205+
if ((field.type === 'checkbox' && !field.checked) ||
206+
(field.tagName === 'SELECT' && !field.value) ||
207+
((field.tagName === 'INPUT' || field.tagName === 'TEXTAREA') && !field.value.trim())) {
208+
allValid = false;
218209
}
219-
220-
form.addEventListener('input', validateForm);
221-
form.addEventListener('change', validateForm);
222-
validateForm();
223210
});
224-
window.onload = function () {
211+
212+
allValid = allValid && captchaInput.value;
213+
214+
submitButton.disabled = !allValid;
215+
submitButton.classList.toggle('bg-primary', allValid);
216+
submitButton.classList.toggle('hover:bg-hover-orange', allValid);
217+
submitButton.classList.toggle('cursor-pointer', allValid);
218+
submitButton.classList.toggle('cursor-not-allowed', !allValid);
219+
submitButton.classList.toggle('bg-gray-300', !allValid);
220+
submitButton.classList.toggle('text-gray-500', !allValid);
221+
submitButton.classList.toggle('text-black', allValid);
222+
}
223+
224+
form.addEventListener('input', validateForm);
225+
form.addEventListener('change', validateForm);
226+
225227
window.turnstileCallback = function () {
226228
turnstile.render('.cf-turnstile', {
227229
sitekey: '{{ env('TURNSTILE_SITEKEY') }}',
228-
callback: function(token) {
229-
document.getElementById('cf-turnstile-response').value = token;
230+
callback: function (token) {
231+
captchaInput.value = token;
232+
validateForm();
230233
}
231234
});
232235
};
233-
};
234-
</script>
236+
});
237+
</script>
235238
</div>
236239
</section>
237240
</section>

0 commit comments

Comments
 (0)