How to Validate Form in Bootstrap: Simple Guide with Examples
To validate a form in
Bootstrap, add the needs-validation class to your <form> and use novalidate to disable default browser validation. Then, use Bootstrap's validation classes like is-valid and is-invalid with JavaScript to show feedback messages when users submit the form.Syntax
Bootstrap form validation uses these key parts:
<form class="needs-validation" novalidate>: Marks the form for Bootstrap validation and disables default browser validation.requiredattribute on inputs: Makes fields mandatory.<div class="valid-feedback">and<div class="invalid-feedback">: Containers for success or error messages.- JavaScript code: Checks form validity on submit and toggles validation classes.
html
<form class="needs-validation" novalidate> <input type="text" class="form-control" required> <div class="valid-feedback">Looks good!</div> <div class="invalid-feedback">Please fill out this field.</div> <button type="submit">Submit</button> </form>
Example
This example shows a simple form with one required input. When you try to submit empty, it shows an error message. If filled, it shows success.
html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Bootstrap Form Validation Example</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container mt-5"> <form class="needs-validation" novalidate> <div class="mb-3"> <label for="username" class="form-label">Username</label> <input type="text" class="form-control" id="username" required> <div class="valid-feedback">Looks good!</div> <div class="invalid-feedback">Please enter your username.</div> </div> <button class="btn btn-primary" type="submit">Submit</button> </form> </div> <script> (() => { 'use strict' const forms = document.querySelectorAll('.needs-validation') Array.from(forms).forEach(form => { form.addEventListener('submit', event => { if (!form.checkValidity()) { event.preventDefault() event.stopPropagation() } form.classList.add('was-validated') }, false) }) })() </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script> </body> </html>
Output
A form with a username input and submit button. If submitted empty, the input border turns red and shows 'Please enter your username.' If filled, the border turns green and shows 'Looks good!'
Common Pitfalls
- Not adding
novalidateon the form causes default browser validation popups, which can confuse users. - Forgetting to add
requiredor other validation attributes means Bootstrap won't know which fields to check. - Not running JavaScript to add
was-validatedclass means validation styles won't show. - Using invalid feedback elements outside the form group can break layout.
html
<!-- Wrong: Missing novalidate and JS --> <form class="needs-validation"> <input type="text" required> <div class="invalid-feedback">Error</div> <button type="submit">Submit</button> </form> <!-- Right: Added novalidate and JS --> <form class="needs-validation" novalidate> <input type="text" required> <div class="invalid-feedback">Error</div> <button type="submit">Submit</button> </form> <script> const form = document.querySelector('.needs-validation'); form.addEventListener('submit', e => { if (!form.checkValidity()) { e.preventDefault(); e.stopPropagation(); } form.classList.add('was-validated'); }); </script>
Quick Reference
Remember these key points for Bootstrap form validation:
- Add
needs-validationandnovalidateto your form. - Use HTML5 validation attributes like
required,type="email", etc. - Include
valid-feedbackandinvalid-feedbackelements for messages. - Use JavaScript to check validity and add
was-validatedclass on submit. - Bootstrap styles inputs with green/red borders based on validation state.
Key Takeaways
Add class 'needs-validation' and attribute 'novalidate' to your form to enable Bootstrap validation.
Use HTML5 validation attributes like 'required' on inputs to specify rules.
Run JavaScript on form submit to check validity and add 'was-validated' class for styling.
Place 'valid-feedback' and 'invalid-feedback' elements inside form groups for user messages.
Bootstrap automatically styles inputs with green or red borders based on validation state.