HTML forms facilitate user data collection. JavaScript intercepts form submit events (submit), validates field inputs, controls submit buttons, and extracts values via the HTMLFormElement.elements collection.
flowchart TD
SubmitEvent["User Clicks Submit / Presses Enter"] --> EventIntercept["submit Event Fires"]
EventIntercept --> PreventDef["event.preventDefault() (Halts default HTTP reload)"]
PreventDef --> Validation["Validate Form Inputs"]
Validation -- "Invalid" --> ShowErrors["Display Error Messages"]
Validation -- "Valid" --> SubmitAPI["Send Payload via fetch() / AJAX"]
| Input Control Type | Access Property | Example |
|---|---|---|
| Text / Password / Email | inputEl.value |
const name = form.elements['username'].value; |
| Checkbox | inputEl.checked |
const isAgreed = form.elements['terms'].checked; |
| Radio Button Group | form.elements['group'].value |
Returns value of currently checked radio. |
| Select Dropdown | selectEl.value |
Returns value of selected <option>. |
| Multi-Select | Array.from(selectEl.options) |
Filter options where option.selected === true. |
// Demonstrating Form handling, preventDefault, and FormData API
document.addEventListener("DOMContentLoaded", () => {
const formHtml = `
<form id="registration-form" novalidate>
<input type="text" name="username" placeholder="Username" required>
<input type="email" name="email" placeholder="Email" required>
<button type="submit">Register</button>
</form>
`;
document.body.insertAdjacentHTML("beforeend", formHtml);
const formEl = document.getElementById("registration-form");
formEl.addEventListener("submit", (event) => {
// 1. Prevent default browser page reload HTTP submission
event.preventDefault();
// 2. Extract values via FormData API
const formData = new FormData(formEl);
const formPayload = Object.fromEntries(formData.entries());
console.log("Form Payload Object:", formPayload);
// 3. Validation Check
if (!formPayload.username || formPayload.username.length < 3) {
console.error("Validation Failed: Username must be at least 3 characters.");
return;
}
console.log("Form Validated! Transmitting payload via API...");
});
});
event.preventDefault(): Call event.preventDefault() inside the submit event listener to stop the browser from reloading the page.submit Event on <form>, Not click on <button>: Form submissions can be triggered by pressing Enter inside text inputs. Attach the event listener to the <form> submit event.FormData(form): new FormData(formElement) extracts all named form fields into a clean key-value payload automatically.How do you check if a checkbox <input type="checkbox" name="agree"> is checked in JavaScript?
Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.
Quick Access With
Experiment with the code from this lesson in our interactive playground.
You've completed this section! Take a quick 5-question quiz to check your understanding.