function enforceFormFieldLimits() {
const form = document.querySelector('form'); // Select the form element
if (!form) {
console.warn("No form found. Limits will not be enforced.");
return;
}
const fields = form.querySelectorAll('input, textarea, select'); // Select all form fields
fields.forEach(field => {
const limit = field.dataset.limit; // Get limit from data attribute
const type = field.type;
if (limit) {
field.addEventListener('input', () => { // Listen for input events
let value = field.value;
if (type === 'number') {
value = parseInt(value, 10); // Convert to number
if (isNaN(value)) {
value = 0; // Handle invalid number input
}
} else if (type === 'text' || type === 'email' || type === 'tel') {
value = String(value); // Ensure it's a string
}
if (value.length > limit) {
field.value = value.slice(0, limit); // Truncate value
field.dataset.error = `Maximum length is ${limit}`; // Add error message
} else {
field.dataset.error = ''; // Clear error message
}
});
}
});
}
// Call the function when the DOM is ready
document.addEventListener('DOMContentLoaded', enforceFormFieldLimits);
Add your comment