🔥Limited Offer: Get 50% OFFon AI & Full Stack Courses🔥
Back to JavaScript Notes
Topic #122

JS Form Validation

In this project you will build a form with validation.

The form will show error messages under each input field, and it will not submit until everything is valid.

What You Will Learn

  • How to validate form fields with JavaScript
  • How to prevent a form from submitting
  • How to show error messages under inputs
  • How to check email and password rules

Step 1 - Create the HTML

Create a form with four fields and an error message under each field.

Example

<form id="signupForm">

<div class="field">

  <label>Name:</label><br>

  <input id="name" type="text" placeholder="Your name">

  <p id="nameError" class="error"></p>

</div>

<form>

Step 2 - Add the CSS

Example

<style>

input {

  padding: 8px;

  width: 260px;

  margin-bottom: 4px;

}

.error {

  color: red;

  margin: 0;

}

.ok {

  color: green;

  margin: 0;

}

.field {

  margin-bottom: 12px;

}

</style>

Step 3 - Add JavaScript

You must create an object for each field.

Example

// Create an Object for each Field

const form = document.getElementById("signupForm");

const nameInput = document.getElementById("name");

const emailInput = document.getElementById("email");

const passInput = document.getElementById("password");

const confirmInput = document.getElementById("confirm");

const nameError = document.getElementById("nameError");

const emailError = document.getElementById("emailError");

const passError = document.getElementById("passwordError");

const confirmError = document.getElementById("confirmError");

const result = document.getElementById("result");

You need a function to diplay errors.

Example

// Function to Display Error

function showError(el, message) {

  el.innerHTML = message;

}

You need a function to clear the error field.

Example

// Function to Clear the Error

function clearError(el) {

  el.innerHTML = "";

}

You need a function to validate the form.

Example

// Function to Validate Form

function validateForm() {

  return false;

}

You need the code to validate the form.

To validate the form, you must stop the page from reloading.

Example

// Prevent Default Reloading

form.addEventListener("submit", function (event) {

  event.preventDefault();

// Clear Result

  result.innerHTML = "";

// Validate Form

  if (validateForm()) {

    result.innerHTML = "Form is valid!";

    result.className = "ok";

  } else {

    result.innerHTML = "Please fix the errors.";

    result.className = "error";

  }

});

Step 4 - Validate Fields

Create one function per field.

Validate Name

// Function to Validate Name

function validateName() {

  let value = nameInput.value.trim();

  if (value.length < 2) {

    showError(nameError, "Name must be at least 2 characters.");

    return false;

  }

  clearError(nameError);

  return true;

}

// Function to Validate Form

function validateForm() {

  let okName = validateName();

  return okName;

}

Validate Email

// Function to Validate Email

function validateEmail() {

  let value = emailInput.value.trim();

  if (!(/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value))) {

    showError(emailError, "Enter a valid email address.");

    return false;

  }

  clearError(emailError);

  return true;

}

// Function to Validate Form

function validateForm() {

  let okName = validateName();

  let okEmail = validateEmail();

  return okName && okEmail;

}

Validate Password

// Function to Validate Password

function validatePassword() {

  let value = passInput.value;

  if (value.length < 8) {

    showError(passError, "Password must be at least 8 characters.");

    return false;

  }

  clearError(passError);

  return true;

}

// Function to Validate Form

function validateForm() {

  let okName = validateName();

  let okEmail = validateEmail();

  let okPass = validatePassword();

  return okName && okEmail && okPass;

}

Validate Confirm

// Function to Validate Confirm

function validateConfirm() {

  let pass = passInput.value;

  let confirm = confirmInput.value;

  if (confirm === "") {

    showError(confirmError, "Please confirm your password.");

    return false;

  }

  if (confirm !== pass) {

    showError(confirmError, "Passwords do not match.");

    return false;

  }

  clearError(confirmError);

  return true;

}

// Function to Validate Form

function validateForm() {

  let okName = validateName();

  let okEmail = validateEmail();

  let okPass = validatePassword();

  let okConfirm = validateConfirm();

  return okName && okEmail && okPass && okConfirm;

}

Form Validation (Finished)

This example shows the finished project.

The CSS

<style>

input {

  padding: 8px;

  width: 260px;

  margin-bottom: 4px;

}

.error {

  color: red;

  margin: 0;

}

.ok {

  color: green;

  margin: 0;

}

.field {

  margin-bottom: 12px;

}

</style>

The HTML

<!DOCTYPE html>

<html>

<style>

... CSS goes here

</style>

<body>

<h2>Sign Up</h2>

<form id="signupForm">

<div class="field">

  <label>Name:</label><br>

  <input id="name" type="text" placeholder="Your name">

  <p id="nameError" class="error"></p>

</div>

<div class="field">

  <label>Email:</label><br>

  <input id="email" type="text" placeholder="name@example.com">

  <p id="emailError" class="error"></p>

</div>

<div class="field">

  <label>Password:</label><br>

  <input id="password" type="password" placeholder="Min 8 characters">

  <p id="passwordError" class="error"></p>

</div>

<div class="field">

  <label>Confirm Password:</label><br>

  <input id="confirm" type="password" placeholder="Repeat password">

  <p id="confirmError" class="error"></p>

</div>

<p><button type="submit">Create Account</button></p>

</form>

<p id="result"></p>

<script>

// JavaScript goes here

</script>

</body>

</html>

The JavaScript

// Create an Object for each Field

const form = document.getElementById("signupForm");

const nameInput = document.getElementById("name");

const emailInput = document.getElementById("email");

const passInput = document.getElementById("password");

const confirmInput = document.getElementById("confirm");

const nameError = document.getElementById("nameError");

const emailError = document.getElementById("emailError");

const passError = document.getElementById("passwordError");

const confirmError = document.getElementById("confirmError");

const result = document.getElementById("result");

// Function to Display Error

function showError(el, message) {

  el.innerHTML = message;

}

// Function to Clear Error

function clearError(el) {

  el.innerHTML = "";

}

// Function to Validate Name

function validateName() {

  let value = nameInput.value.trim();

  if (value.length < 2) {

    showError(nameError, "Name must be at least 2 characters.");

    return false;

  }

  clearError(nameError);

  return true;

}

// Function to Validate Email

function validateEmail() {

  let value = emailInput.value.trim();

  if (!(/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value))) {

    showError(emailError, "Enter a valid email address.");

    return false;

  }

  clearError(emailError);

  return true;

}

// Function to Validate Password

function validatePassword() {

  let value = passInput.value;

  if (value.length < 8) {

    showError(passError, "Password must be at least 8 characters.");

    return false;

  }

  clearError(passError);

  return true;

}

// Function to Validate Confirm

function validateConfirm() {

  let pass = passInput.value;

  let confirm = confirmInput.value;

  if (confirm === "") {

    showError(confirmError, "Please confirm your password.");

    return false;

  }

  if (confirm !== pass) {

    showError(confirmError, "Passwords do not match.");

    return false;

  }

  clearError(confirmError);

  return true;

}

// Function to Validate Form

function validateForm() {

  let okName = validateName();

  let okEmail = validateEmail();

  let okPass = validatePassword();

  let okConfirm = validateConfirm();

  return okName && okEmail && okPass && okConfirm;

}

// Prevent Default Reloading

form.addEventListener("submit", function (event) {

  event.preventDefault();

// Clear Result

  result.innerHTML = "";

// Validate Form

  if (validateForm()) {

    result.innerHTML = "Form is valid!";

    result.className = "ok";

  } else {

    result.innerHTML = "Please fix the errors.";

    result.className = "error";

  }

});

Common Mistakes

  • Forgetting event.preventDefault()
  • Not trimming the input values
  • Using innerHTML with user input (use text only for messages)

Exercise 1

Add a rule that the password must contain at least one number.

Exercise 2

Validate fields while the user is typing (use the input event).

Exercise 3

Show a green message next to fields that are valid.


Bonus Challenges (Level Up)

  • Add password strength indicator (Weak / Medium / Strong)
  • Disable the submit button until everything is valid
  • Show/hide password button

Note: JavaScript Projects JavaScript Counter A counter project with restore and save in localStorage. JavaScript Event Listener The counter project using event listener instead of onclick. JavaScript To-Do List A do-do list saved in an array in local storage. JavaScript Modal Popup A modal popup window that appears on top of the page. JavaScript Form Validation An HTML Form with form validation.

Want to go beyond the notes?

Join CodingNow 2.0's JavaScript course — live mentorship, real projects, and 100% placement support.

Enroll Now — Free Demo Available

JS Form Validation – FAQs

Quick answers about learning JS Form Validation in JavaScript.

This free note from CodingNow 2.0 explains JS Form Validation in JavaScript — concept, syntax and worked code examples you can copy, run and revise before interviews.
Yes. Every JavaScript topic on CodingNow 2.0, including JS Form Validation, is 100% free with no signup required.
With focused practice, most students grasp JS Form Validation in 1–3 days from these notes; pairing it with CodingNow 2.0's mentor-led course takes you to job-ready depth faster.
Use the code examples in this note, then ask doubts for free on the CodingNow 2.0 Community (/community) — expert instructors answer within 24 hours.
WhatsApp
Call NowEnroll Now