JavaScript form validation - Display error for empty fields
JavaScript Event Handling: Exercise-4 with Solution
Form Validation with Error Message
Write a JavaScript program that implements a "form" validation that displays an error message if a required field is left empty when submitting the form.
Sample Solution:
HTML and JavaScript Code:
<!DOCTYPE html>
<html>
<head>
<style>
.error-message {
color: red;
margin-top: 5px;
}
</style>
</head>
<body>
<form id="myForm">
<label for="name">Name:</label>
<input type="text" id="name" required>
<br>
<label for="email">Email:</label>
<input type="email" id="email" required>
<br>
<label for="message">Message:</label>
<textarea id="message" required></textarea>
<br>
<button type="submit">Submit</button>
</form>
<div id="errorMessages"></div>
<script>
const form = document.getElementById('myForm');
const errorMessagesDiv = document.getElementById('errorMessages');
form.addEventListener('submit', (event) => {
event.preventDefault();
errorMessagesDiv.innerHTML = '';
const requiredFields = form.querySelectorAll('[required]');
requiredFields.forEach((field) => {
if (field.value.trim() === '') {
const fieldName = field.getAttribute('name');
const errorMessage = document.createElement('p');
errorMessage.textContent = `${fieldName} is required.`;
errorMessagesDiv.appendChild(errorMessage);
}
});
});
</script>
</body>
</html>
Output:
Note: Executed on JS Bin
Explanation:
In the above exercise,
- The HTML structure consists of a <form> element with an id of "myForm" that contains several input fields and a submit button. Below the form, there is a <div> element with an id of "errorMessages" which serves as a container for displaying error messages.
- The JavaScript code attaches an event listener to the form's "submit" event using addEventListener. When the form is submitted, the event listener function is triggered.
- Inside the event listener function, the default form submission behavior is prevented using event.preventDefault() to stop the form from being submitted and the page from being refreshed.
- The code then retrieves all the input fields with the required attribute using form.querySelectorAll('[required]'). It loops through each of these required fields using forEach and checks if the field's value, after trimming any leading or trailing spaces, is empty. If a required field is empty, an error message is created as a <p> element. Its content is set to indicate the field name followed by the text "is required."
- The error message element is then appended to the "errorMessagesDiv" container using appendChild.
Flowchart:
Live Demo:
See the Pen javascript-event-handling-exercise-4 by w3resource (@w3resource) on CodePen.
Improve this sample solution and post your code through Disqus.
Event Handling Exercises Previous: JavaScript mouse enter event - Change background color.
Event Handling Exercises Next: JavaScript Slideshow - Next & previous button image change.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://www.w3resource.com/javascript-exercises/event/javascript-event-handling-exercise-4.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics