Skip to content

Bootstrap 表单验证

🎯 概述

Bootstrap 表单验证提供了客户端验证样式和反馈,帮助用户正确填写表单。

📦 基本用法

html
<form class="needs-validation" novalidate>
    <div class="mb-3">
        <label for="validationCustom01" class="form-label">名字</label>
        <input type="text" class="form-control" id="validationCustom01" required>
        <div class="valid-feedback">
            看起来不错!
        </div>
        <div class="invalid-feedback">
            请提供有效的名字。
        </div>
    </div>
    
    <button class="btn btn-primary" type="submit">提交表单</button>
</form>

<script>
// 表单验证
(function() {
    '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>

✅ 验证状态

html
<!-- 有效状态 -->
<div class="mb-3">
    <label for="validInput" class="form-label">有效输入</label>
    <input type="text" class="form-control is-valid" id="validInput" value="正确的值">
    <div class="valid-feedback">
        输入正确!
    </div>
</div>

<!-- 无效状态 -->
<div class="mb-3">
    <label for="invalidInput" class="form-label">无效输入</label>
    <input type="text" class="form-control is-invalid" id="invalidInput">
    <div class="invalid-feedback">
        请提供有效的输入。
    </div>
</div>

🌟 实际示例

html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Bootstrap 表单验证示例</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
    <div class="container my-5">
        <h1>Bootstrap 表单验证示例</h1>
        
        <form class="needs-validation" novalidate>
            <div class="row">
                <div class="col-md-6 mb-3">
                    <label for="firstName" class="form-label">名字</label>
                    <input type="text" class="form-control" id="firstName" required>
                    <div class="valid-feedback">看起来不错!</div>
                    <div class="invalid-feedback">请提供名字。</div>
                </div>
                
                <div class="col-md-6 mb-3">
                    <label for="lastName" class="form-label">姓氏</label>
                    <input type="text" class="form-control" id="lastName" required>
                    <div class="valid-feedback">看起来不错!</div>
                    <div class="invalid-feedback">请提供姓氏。</div>
                </div>
            </div>
            
            <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>
            
            <div class="mb-3">
                <label for="password" class="form-label">密码</label>
                <input type="password" class="form-control" id="password" minlength="8" required>
                <div class="invalid-feedback">密码至少需要 8 个字符。</div>
            </div>
            
            <div class="mb-3">
                <div class="form-check">
                    <input class="form-check-input" type="checkbox" id="agree" required>
                    <label class="form-check-label" for="agree">
                        同意条款和条件
                    </label>
                    <div class="invalid-feedback">您必须同意才能提交。</div>
                </div>
            </div>
            
            <button class="btn btn-primary" type="submit">提交表单</button>
        </form>
    </div>
    
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
    <script>
        (function() {
            '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>
</body>
</html>

下一步

恭喜!你已经完成了 Bootstrap 教程的学习。

返回首页 →