Bootstrap - Bootstrap 5 Input Group

Bootstrap 5 Input Groups allow you to combine inputs, buttons, text, icons, or dropdowns into a single form control.
They are extremely useful for building search bars, currency fields, email inputs, quantity selectors, and complex form layouts.


1. Basic Bootstrap 5 Input Group

Use the .input-group container along with .input-group-text to prepend or append text to an input.

Example: Basic Input Group

<div class="input-group mb-3">
  <span class="input-group-text" id="basic-addon1">@</span>
  <input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="basic-addon1">
</div>

Explanation:

  • .input-group → Wraps the entire group.

  • .input-group-text → Adds static text or symbols.

  • .form-control → Styles the input field.

  • aria-describedby → Improves accessibility.


2. Input Group with Text on Both Sides

You can add text on both sides of the input.

<div class="input-group mb-3">
  <span class="input-group-text">$</span>
  <input type="text" class="form-control" placeholder="Amount">
  <span class="input-group-text">.00</span>
</div>

3. Input Group Sizing

Bootstrap 5 supports three sizes of input groups:

Large Input Group

<div class="input-group input-group-lg mb-3">
  <span class="input-group-text">Large</span>
  <input type="text" class="form-control" placeholder="Large input">
</div>

Default Input Group

<div class="input-group mb-3">
  <span class="input-group-text">Default</span>
  <input type="text" class="form-control" placeholder="Default input">
</div>

Small Input Group

<div class="input-group input-group-sm mb-3">
  <span class="input-group-text">Small</span>
  <input type="text" class="form-control" placeholder="Small input">
</div>

4. Input Group with Buttons

You can place buttons before or after an input field.

Button on Right Side

<div class="input-group mb-3">
  <input type="text" class="form-control" placeholder="Search">
  <button class="btn btn-primary" type="button">Go</button>
</div>

Button on Left Side

<div class="input-group mb-3">
  <button class="btn btn-outline-secondary" type="button">Copy</button>
  <input type="text" class="form-control" placeholder="Paste content here">
</div>

5. Input Group with Dropdowns

You can use Bootstrap dropdowns inside input groups.

Dropdown on Left

<div class="input-group mb-3">
  <button class="btn btn-outline-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown">Action</button>
  <ul class="dropdown-menu">
    <li><a class="dropdown-item" href="#">Option 1</a></li>
    <li><a class="dropdown-item" href="#">Option 2</a></li>
    <li><a class="dropdown-item" href="#">Option 3</a></li>
  </ul>
  <input type="text" class="form-control" placeholder="Choose option">
</div>

6. Input Group with Checkboxes and Radios

You can integrate checkboxes or radio buttons inside input groups.

Checkbox Example

<div class="input-group mb-3">
  <div class="input-group-text">
    <input class="form-check-input mt-0" type="checkbox">
  </div>
  <input type="text" class="form-control" placeholder="Enter text">
</div>

Radio Example

<div class="input-group mb-3">
  <div class="input-group-text">
    <input class="form-check-input mt-0" type="radio" name="radioGroup">
  </div>
  <input type="text" class="form-control" placeholder="Radio input">
</div>

7. Input Group with Multiple Inputs

Bootstrap 5 allows multiple input fields inside a single .input-group.

<div class="input-group mb-3">
  <span class="input-group-text">First & Last Name</span>
  <input type="text" class="form-control" placeholder="First Name">
  <input type="text" class="form-control" placeholder="Last Name">
</div>

8. Input Group with Icons

You can use Bootstrap Icons or Font Awesome inside .input-group-text.

<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons/font/bootstrap-icons.css" rel="stylesheet">

<div class="input-group mb-3">
  <span class="input-group-text"><i class="bi bi-envelope"></i></span>
  <input type="email" class="form-control" placeholder="Email address">
</div>

9. Input Group with Floating Labels

Combine floating labels with input groups for a modern look.

<div class="input-group mb-3">
  <span class="input-group-text">@</span>
  <div class="form-floating">
    <input type="email" class="form-control" id="floatingEmail" placeholder="Email">
    <label for="floatingEmail">Email</label>
  </div>
</div>

10. Input Group with Validation

Bootstrap 5 supports form validation with input groups.

<form class="needs-validation" novalidate>
  <div class="input-group has-validation mb-3">
    <span class="input-group-text">@</span>
    <input type="text" class="form-control" id="username" placeholder="Username" required>
    <div class="invalid-feedback">
      Please enter a valid username.
    </div>
  </div>
  <button class="btn btn-primary" type="submit">Submit</button>
</form>

11. Full Example: Bootstrap 5 Input Groups

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Bootstrap 5 Input Groups</title>
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
  <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons/font/bootstrap-icons.css" rel="stylesheet">
</head>
<body class="p-4">

  <h3>Bootstrap 5 Input Groups</h3>

  <!-- Basic Input Group -->
  <div class="input-group mb-3">
    <span class="input-group-text">@</span>
    <input type="text" class="form-control" placeholder="Username">
  </div>

  <!-- Input with text on both sides -->
  <div class="input-group mb-3">
    <span class="input-group-text">$</span>
    <input type="text" class="form-control" placeholder="Amount">
    <span class="input-group-text">.00</span>
  </div>

  <!-- Input with button -->
  <div class="input-group mb-3">
    <input type="text" class="form-control" placeholder="Search">
    <button class="btn btn-primary" type="button">Go</button>
  </div>

  <!-- Input with dropdown -->
  <div class="input-group mb-3">
    <button class="btn btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown">Action</button>
    <ul class="dropdown-menu">
      <li><a class="dropdown-item" href="#">Option 1</a></li>
      <li><a class="dropdown-item" href="#">Option 2</a></li>
    </ul>
    <input type="text" class="form-control" placeholder="Select option">
  </div>

  <!-- Input with icon -->
  <div class="input-group mb-3">
    <span class="input-group-text"><i class="bi bi-envelope"></i></span>
    <input type="email" class="form-control" placeholder="Email">
  </div>

  <!-- Input with checkbox -->
  <div class="input-group mb-3">
    <div class="input-group-text">
      <input class="form-check-input mt-0" type="checkbox">
    </div>
    <input type="text" class="form-control" placeholder="Checkbox input">
  </div>

  <!-- Multiple inputs -->
  <div class="input-group mb-3">
    <span class="input-group-text">Full Name</span>
    <input type="text" class="form-control" placeholder="First Name">
    <input type="text" class="form-control" placeholder="Last Name">
  </div>

  <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>