(() => { const forms = document.querySelectorAll('.needs-validation'); forms.forEach((form) => { form.addEventListener('submit', (event) => { const message = form.querySelector('textarea[name="message"]'); if (message && message.value.trim().length < 10) { message.setCustomValidity('Please enter at least 10 characters.'); } else if (message) { message.setCustomValidity(''); } if (!form.checkValidity()) { event.preventDefault(); event.stopPropagation(); } form.classList.add('was-validated'); }); }); const textarea = document.querySelector('textarea[name="message"]'); const counter = document.querySelector('[data-char-count]'); if (textarea && counter) { const update = () => { counter.textContent = String(textarea.value.length); }; textarea.addEventListener('input', update); update(); } })();