1. function enforceFormFieldLimits() {
  2. const form = document.querySelector('form'); // Select the form element
  3. if (!form) {
  4. console.warn("No form found. Limits will not be enforced.");
  5. return;
  6. }
  7. const fields = form.querySelectorAll('input, textarea, select'); // Select all form fields
  8. fields.forEach(field => {
  9. const limit = field.dataset.limit; // Get limit from data attribute
  10. const type = field.type;
  11. if (limit) {
  12. field.addEventListener('input', () => { // Listen for input events
  13. let value = field.value;
  14. if (type === 'number') {
  15. value = parseInt(value, 10); // Convert to number
  16. if (isNaN(value)) {
  17. value = 0; // Handle invalid number input
  18. }
  19. } else if (type === 'text' || type === 'email' || type === 'tel') {
  20. value = String(value); // Ensure it's a string
  21. }
  22. if (value.length > limit) {
  23. field.value = value.slice(0, limit); // Truncate value
  24. field.dataset.error = `Maximum length is ${limit}`; // Add error message
  25. } else {
  26. field.dataset.error = ''; // Clear error message
  27. }
  28. });
  29. }
  30. });
  31. }
  32. // Call the function when the DOM is ready
  33. document.addEventListener('DOMContentLoaded', enforceFormFieldLimits);

Add your comment