function tokenizeAndValidateForm(formElement) {
const values = {};
// Iterate through form elements
for (let i = 0; i < formElement.elements.length; i++) {
const element = formElement.elements[i];
const name = element.name;
let value = element.value;
// Basic validation based on element type
if (element.type === 'text' || element.type === 'email') {
value = value.trim(); // Remove leading/trailing whitespace
if (value === "") {
alert(`Field '${name}' cannot be empty.`);
element.focus(); // Focus on the invalid field
return false; // Stop processing
}
//Simple email validation
if (element.type === 'email' && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) {
alert(`Invalid email format for field '${name}'.`);
element.focus();
return false;
}
} else if (element.type === 'number') {
value = parseInt(value, 10);
if (isNaN(value)) {
alert(`Invalid number format for field '${name}'.`);
element.focus();
return false;
}
if (element.min !== undefined && value < element.min) {
alert(`Number for field '${name}' must be at least ${element.min}.`);
element.focus();
return false;
}
if (element.max !== undefined && value > element.max) {
alert(`Number for field '${name}' must be at most ${element.max}.`);
element.focus();
return false;
}
} else if (element.type === 'password') {
value = value.trim();
if (value === "") {
alert(`Field '${name}' cannot be empty.`);
element.focus();
return false;
}
}
// Handle other types as needed (select, textarea, etc.)
else {
//For other types, just store the value
value = value.trim();
}
values[name] = value;
}
return values; // Return the validated data
}
// Example usage (assuming you have a form with id "myForm")
document.addEventListener("DOMContentLoaded", function() {
const form = document.getElementById("myForm");
if (form) {
form.addEventListener("submit", function(event) {
event.preventDefault(); // Prevent default form submission
const validatedData = tokenizeAndValidateForm(form);
if (validatedData) {
console.log("Form data:", validatedData);
// Process the validated data (e.g., send to server)
}
});
}
});
Add your comment