Bootstrap 5提供了强大的内置表单验证功能,通过HTML5验证属性和Bootstrap的样式类实现:
<form class="needs-validation" novalidate>
<div class="mb-3">
<label for="email" class="form-label">邮箱地址</label>
<input type="email" class="form-control" id="email" required>
<div class="invalid-feedback">请输入有效的邮箱地址</div>
</div>
<button type="submit" class="btn btn-primary">提交</button>
</form>
<script>
// JavaScript验证触发
(function () {
'use strict'
var forms = document.querySelectorAll('.needs-validation')
Array.prototype.slice.call(forms)
.forEach(function (form) {
form.addEventListener('submit', function (event) {
if (!form.checkValidity()) {
event.preventDefault()
event.stopPropagation()
}
form.classList.add('was-validated')
}, false)
})
})()
</script>
通过JavaScript扩展自定义验证规则:
// 自定义密码强度验证
function validatePassword(password) {
const regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$/
return regex.test(password)
}
// 添加到Bootstrap验证
const passwordInput = document.getElementById('password')
passwordInput.addEventListener('input', function() {
if (validatePassword(this.value)) {
this.setCustomValidity('')
} else {
this.setCustomValidity('密码必须包含大小写字母和数字,且长度至少8位')
}
})
整合jQuery Validation插件增强验证功能:
<script src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.5/dist/jquery.validate.min.js"></script>
<script>
$("#myForm").validate({
rules: {
username: {
required: true,
minlength: 3
},
email: {
required: true,
email: true
}
},
messages: {
username: {
required: "请输入用户名",
minlength: "用户名至少3个字符"
}
}
})
</script>
前端验证需与服务器端验证结合使用:
// Ajax实时验证用户名是否存在
$('#username').on('blur', function() {
$.ajax({
url: '/check-username',
data: {username: $(this).val()},
success: function(response) {
if (response.exists) {
$('#username').addClass('is-invalid')
$('#username-feedback').text('用户名已存在')
}
}
})
})
通过以上方法,您可以实现强大而用户友好的Bootstrap表单验证功能,提升网站的数据质量和用户体验。