Bootstrap5表單基礎:輸入框、下拉菜單與驗證技巧

在Web開發中,表單是收集用戶信息的重要組件。Bootstrap5提供了簡潔高效的表單樣式和驗證工具,讓我們無需從零開始設計就能快速構建美觀且功能完善的表單。本文將從基礎輸入框、下拉菜單到表單驗證,一步步帶你掌握Bootstrap5表單的核心用法。

爲什麼用Bootstrap做表單?

Bootstrap5的表單組件通過預定義的CSS類,能快速美化表單元素,同時支持響應式佈局(適配手機、平板、電腦)。相比純HTML/CSS寫表單,Bootstrap可以大幅減少樣式代碼,專注於功能實現,尤其適合初學者快速上手。

一、基礎輸入框:讓表單更整潔

輸入框是表單最基礎的元素,Bootstrap通過簡單的類名就能讓輸入框擁有現代感的樣式。

1. 基本輸入框結構

一個標準的Bootstrap輸入框需要包含標籤(Label)輸入框(Input),並通過類名優化樣式和間距。
示例代碼:

<div class="mb-3">
  <label for="username" class="form-label">用戶名</label>
  <input type="text" class="form-control" id="username" placeholder="請輸入用戶名">
</div>
  • form-label:給標籤添加樣式,使其更清晰易讀。
  • form-control:輸入框的核心樣式類,提供邊框、圓角、內邊距等,讓輸入框更美觀。
  • mb-3margin-bottom縮寫,用於控制輸入框與下方元素的間距(3代表間距大小,數字越大間距越大)。
  • idfor:必須對應,用於關聯標籤和輸入框,點擊標籤時自動聚焦到輸入框。
  • placeholder:輸入框內的提示文字,引導用戶填寫內容。

2. 不同類型的輸入框

只需修改type屬性,就能實現不同功能的輸入框,Bootstrap的form-control類通用支持:
- 文本框type="text"(默認,用於普通文字)
- 密碼框type="password"(輸入內容隱藏)
- 郵箱type="email"(自動驗證郵箱格式,提交時提示錯誤)
- 數字type="number"(限制只能輸入數字,支持min/max屬性)
- 日期type="date"(彈出日期選擇器)

示例:

<div class="mb-3">
  <label for="email" class="form-label">郵箱</label>
  <input type="email" class="form-control" id="email" placeholder="your@email.com">
</div>

<div class="mb-3">
  <label for="age" class="form-label">年齡</label>
  <input type="number" class="form-control" id="age" min="1" max="120" placeholder="請輸入年齡">
</div>

二、下拉菜單:豐富表單選項

下拉菜單常用於需要用戶從預設選項中選擇的場景(如性別、職業、地區等)。Bootstrap5通過form-select類簡化了下拉菜單的樣式。

1. 基礎下拉菜單

只需將<select>標籤添加form-select類,即可獲得Bootstrap風格的下拉菜單:

<div class="mb-3">
  <label for="gender" class="form-label">性別</label>
  <select class="form-select" id="gender">
    <option>請選擇</option>
    <option></option>
    <option></option>
    <option>保密</option>
  </select>
</div>
  • form-select:讓下拉菜單(<select>)擁有邊框、圓角等樣式,替代原生難看的下拉框。
  • option:下拉選項內容,第一個option通常作爲默認提示(如“請選擇”)。

2. 多選下拉菜單(需JS)

若需要多選功能(如選擇興趣愛好),可使用Bootstrap的下拉按鈕組,結合JavaScript實現:

<div class="mb-3">
  <label class="form-label">興趣愛好</label>
  <div class="dropdown">
    <button class="btn btn-secondary dropdown-toggle" type="button" id="hobbies" data-bs-toggle="dropdown">
      選擇興趣
    </button>
    <ul class="dropdown-menu" aria-labelledby="hobbies">
      <li><input class="form-check-input me-2" type="checkbox" id="reading"> <label class="form-check-label" for="reading">閱讀</label></li>
      <li><input class="form-check-input me-2" type="checkbox" id="sports"> <label class="form-check-label" for="sports">運動</label></li>
      <li><input class="form-check-input me-2" type="checkbox" id="music"> <label class="form-check-label" for="music">音樂</label></li>
    </ul>
  </div>
</div>
  • dropdown系列類:控制下拉按鈕和菜單的展開/收起,需引入Bootstrap5的JS文件(見文末“引入Bootstrap”部分)。

三、表單驗證:確保數據正確

表單提交前,驗證用戶輸入的合法性(如必填項、格式錯誤)是關鍵。Bootstrap5支持HTML5原生驗證自定義反饋樣式,無需複雜代碼即可實現基礎驗證。

1. 基礎驗證:必填項與格式檢查

利用HTML5的required屬性標記必填項,type屬性(如email)自動檢查格式:

<div class="mb-3">
  <label for="username" class="form-label">用戶名</label>
  <input type="text" class="form-control" id="username" placeholder="請輸入用戶名" required>
  <!-- 錯誤提示(默認隱藏,驗證失敗時顯示) -->
  <div class="invalid-feedback">用戶名不能爲空</div>
</div>

<div class="mb-3">
  <label for="email" class="form-label">郵箱</label>
  <input type="email" class="form-control" id="email" placeholder="your@email.com" required>
  <div class="invalid-feedback">請輸入有效的郵箱格式</div>
</div>
  • required:標記輸入框爲必填項,用戶未填寫時阻止表單提交。
  • invalid-feedback:驗證失敗時顯示的錯誤提示,配合is-invalid類觸發(見下文)。

2. 手動觸發驗證狀態

通過JavaScript或直接添加is-valid/is-invalid類,可手動控制驗證狀態:

<div class="mb-3">
  <label for="phone" class="form-label">手機號</label>
  <input type="tel" class="form-control" id="phone" placeholder="11位手機號" required>
  <div class="valid-feedback">格式正確</div>
  <div class="invalid-feedback">請輸入11位有效手機號</div>
</div>

<script>
// 示例:點擊按鈕時驗證手機號
document.getElementById("phone").addEventListener("blur", function() {
  const value = this.value.trim();
  const isValid = /^1[3-9]\d{9}$/.test(value); // 簡單手機號正則
  this.classList.toggle("is-valid", isValid);
  this.classList.toggle("is-invalid", !isValid);
});
</script>
  • is-valid/is-invalid:分別標記驗證通過/失敗狀態,觸發對應valid-feedback/invalid-feedback提示。

四、綜合示例:完整表單實戰

以下是一個包含輸入框、下拉菜單、驗證的完整註冊表單示例:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>Bootstrap5表單示例</title>
  <!-- 引入Bootstrap5 CSS -->
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="p-4">
  <form class="row g-3">
    <!-- 左側列(佔6列) -->
    <div class="col-md-6">
      <div class="mb-3">
        <label for="username" class="form-label">用戶名</label>
        <input type="text" class="form-control" id="username" placeholder="請輸入用戶名" 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" placeholder="請輸入密碼" required minlength="6">
        <div class="invalid-feedback">密碼長度不能少於6位</div>
      </div>
    </div>

    <!-- 右側列(佔6列) -->
    <div class="col-md-6">
      <div class="mb-3">
        <label for="gender" class="form-label">性別</label>
        <select class="form-select" id="gender" required>
          <option>請選擇</option>
          <option></option>
          <option></option>
        </select>
      </div>

      <div class="mb-3">
        <label for="phone" class="form-label">手機號</label>
        <input type="tel" class="form-control" id="phone" placeholder="11位手機號" required>
        <div class="invalid-feedback">請輸入11位有效手機號</div>
      </div>
    </div>

    <!-- 提交按鈕 -->
    <div class="col-12">
      <button type="submit" class="btn btn-primary">提交</button>
    </div>
  </form>

  <!-- 引入Bootstrap5 JS(用於下拉菜單等交互功能) -->
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

五、關鍵技巧總結

  1. 間距控制:使用mb-3(下間距)、mt-2(上間距)等類調整元素間距,避免表單擁擠。
  2. 響應式佈局:通過row+col-*(如col-md-6)實現多列布局,在不同屏幕下自動適配。
  3. 驗證狀態切換is-valid/is-invalid類可結合JS動態控制,提升交互體驗。
  4. 樣式複用:表單容器可加row g-3實現整體間距,所有輸入框統一用form-control保證風格一致。

引入Bootstrap5

使用Bootstrap5需在HTML頭部引入CSS和JS(若需交互功能):

<!-- 僅需CSS(基礎樣式) -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">

<!-- 需交互功能(下拉菜單、模態框等)時引入JS -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>

通過以上內容,你已掌握Bootstrap5表單的核心用法:從基礎輸入框美化,到下拉菜單擴展,再到驗證邏輯實現。多嘗試不同的輸入框類型和驗證規則,就能快速構建出專業級表單!

小夜