Validate Bootstrap forms client-side with needs-validation class and checkValidity() API.
Form Validation
<form class="needs-validation" novalidate>
<div class="mb-3">
<input type="email" class="form-control" required>
<div class="valid-feedback">Looks good!</div>
<div class="invalid-feedback">Please enter a valid email.</div>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
<script>
document.querySelectorAll(".needs-validation").forEach(form => {
form.addEventListener("submit", e => {
if (!form.checkValidity()) { e.preventDefault(); e.stopPropagation(); }
form.classList.add("was-validated");
});
});
</script>