Basic example
<form> <div class="form-group mb-20"> <label class="form-label" for="exampleInputEmail1">Email address</label> <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Email"> </div> <div class="form-group mb-20"> <label class="form-label" for="exampleInputPassword1">Password</label> <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password"> </div> <div class="form-group mb-20"> <label class="form-label" for="exampleInputFile">File input</label> <input class="form-control" type="file" id="exampleInputFile"> </div> <div class="form-check mb-20"> <input class="form-check-input" type="checkbox" id="checkbox1"> <label class="form-check-label" for="checkbox1">Check me out</label> </div> <div class="btn-box"> <button type="reset" class="btn btn-light">Reset Form</button> <button type="submit" class="btn btn-success">Submit Form</button> </div> </form>
Horizontal form
<form> <div class="horizontal-form"> <div class="row mb-3"> <label for="inputEmail3" class="col-sm-2 col-4 col-form-label">Email</label> <div class="col-sm-10 col-8"> <input type="email" class="form-control" id="inputEmail3"> </div> </div> <div class="row mb-3"> <label for="inputPassword3" class="col-sm-2 col-4 col-form-label">Password</label> <div class="col-sm-10 col-8"> <input type="password" class="form-control" id="inputPassword3"> </div> </div> </div> <div class="row mb-3"> <div class="col-sm-10 offset-sm-2"> <div class="form-check"> <input class="form-check-input" type="checkbox" id="gridCheck1"> <label class="form-check-label" for="gridCheck1">Example checkbox</label> </div> </div> </div> <div class="row"> <div class="col-sm-2"></div> <div class="col-sm-10"> <button type="submit" class="btn btn-outline-primary">Sign in</button> </div> </div> </form>
Inline form
<form class="row row-cols-lg-auto g-3 align-items-center"> <div class="col-12"> <label class="visually-hidden" for="inlineFormInputGroupUsername">Username</label> <div class="input-group"> <div class="input-group-text">@</div> <input type="text" class="form-control" id="inlineFormInputGroupUsername" placeholder="Username"> </div> </div> <div class="col-12"> <label class="visually-hidden" for="inlineFormSelectPref">Preference</label> <select class="form-select form-control" id="inlineFormSelectPref"> <option selected="" hidden="">Choose...</option> <option value="1">One</option> <option value="2">Two</option> <option value="3">Three</option> </select> </div> <div class="col-12"> <div class="form-check"> <input class="form-check-input" type="checkbox" id="inlineFormCheck"> <label class="form-check-label" for="inlineFormCheck">Remember me</label> </div> </div> <div class="col-12"> <button type="submit" class="btn btn-secondary">Submit</button> </div> </form>
Inline form with input group
<form class="row row-cols-lg-auto g-3 align-items-center"> <div class="col-12"> <label class="visually-hidden" for="inlineFormInputGroupUsername2">Username</label> <div class="input-group"> <div class="input-group-text">$</div> <input type="number" class="form-control" id="inlineFormInputGroupUsername2" placeholder="Amount"> <div class="input-group-text">.00</div> </div> </div> <div class="col-12"> <div class="form-check"> <input class="form-check-input" type="checkbox" id="inlineFormCheck2"> <label class="form-check-label" for="inlineFormCheck2">Remember me</label> </div> </div> <div class="col-12"> <button type="submit" class="btn btn-primary">Submit</button> </div> </form>
Disabled fieldsets
Add the disabled
boolean attribute on an input to prevent user interactions and make it appear lighter.
Add the disabled
attribute to a <fieldset>
to disable all the controls within. Browsers treat all native form controls (<input>
, <select>
, and <button>
elements) inside a <fieldset disabled>
as disabled, preventing both keyboard and mouse interactions on them.
Validation states
<form class="row g-3 needs-validation" novalidate=""> <div class="col-md-4"> <label for="validationCustom01" class="form-label">First name</label> <input type="text" class="form-control" id="validationCustom01" value="Mark" required=""> <div class="valid-feedback">Looks good!</div> </div> <div class="col-md-4"> <label for="validationCustom02" class="form-label">Last name</label> <input type="text" class="form-control" id="validationCustom02" value="Otto" required=""> <div class="valid-feedback">Looks good!</div> </div> <div class="col-md-4"> <label for="validationCustomUsername" class="form-label">Username</label> <div class="input-group has-validation"> <span class="input-group-text" id="inputGroupPrepend">@</span> <input type="text" class="form-control" id="validationCustomUsername" aria-describedby="inputGroupPrepend" required=""> <div class="invalid-feedback">Please choose a username.</div> </div> </div> <div class="col-md-6"> <label for="validationCustom03" class="form-label">City</label> <input type="text" class="form-control" id="validationCustom03" required=""> <div class="invalid-feedback">Please provide a valid city.</div> </div> <div class="col-md-3"> <label for="validationCustom04" class="form-label">State</label> <select class="form-select" id="validationCustom04" required=""> <option selected="" disabled="" value="">Choose...</option> <option>...</option> </select> <div class="invalid-feedback">Please select a valid state.</div> </div> <div class="col-md-3"> <label for="validationCustom05" class="form-label">Zip</label> <input type="text" class="form-control" id="validationCustom05" required=""> <div class="invalid-feedback">Please provide a valid zip.</div> </div> <div class="col-12"> <div class="form-check"> <input class="form-check-input" type="checkbox" value="" id="invalidCheck" required=""> <label class="form-check-label" for="invalidCheck">Agree to terms and conditions</label> <div class="invalid-feedback">You must agree before submitting.</div> </div> </div> <div class="col-12"> <button class="btn btn-success" type="submit">Submit form</button> </div> </form>
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) })
Floating labels
<div class="form-floating mb-15"> <input type="email" class="form-control" id="floatingInput" placeholder="name@example.com"> <label for="floatingInput">Email address</label> </div> <div class="form-floating mb-15"> <input type="password" class="form-control" id="floatingPassword" placeholder="Password"> <label for="floatingPassword">Password</label> </div> <div class="form-floating mb-g"> <textarea class="form-control" placeholder="Leave a comment here" id="floatingTextarea2" style="height: 100px"></textarea> <label for="floatingTextarea2">Comments</label> </div>
Checkboxes & Radios
Checkboxes & Radios
Inline Checkboxes & Radios
Custom Components
<!-- Checkboxes & Radios --> <div class="col-xs-12 col-sm-6"> <div class="inline-heading"> <h6>Checkboxes & Radios</h6> </div> <div class="mb-2"> <div class="form-check"> <input class="form-check-input" type="checkbox" id="checkbox2" value=""> <label for="checkbox2"> Option one </label> </div> <div class="form-check disabled"> <input class="form-check-input" type="checkbox" id="checkbox3" value="" disabled=""> <label for="checkbox3"> Option two is disabled </label> </div> </div> <div class="mb-3"> <div class="form-check"> <input class="form-check-input" type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked=""> <label for="optionsRadios1"> Option one </label> </div> <div class="form-check"> <input class="form-check-input" type="radio" name="optionsRadios" id="optionsRadios2" value="option2"> <label for="optionsRadios2"> Option two </label> </div> <div class="form-check disabled"> <input class="form-check-input" type="radio" name="optionsRadios" id="optionsRadios3" value="option3" disabled=""> <label for="optionsRadios3"> Option three is disabled </label> </div> </div> </div> <!-- /Checkboxes & Radios --> <!-- Inline Checkboxes & Radios --> <div class="col-xs-12 col-sm-6"> <div class="inline-heading"> <h6>Inline Checkboxes & Radios</h6> </div> <div> <div class="form-check form-check-inline"> <input class="form-check-input" type="checkbox" id="inlineCheckbox1" value="option1"> <label for="inlineCheckbox1" class="checkbox-inline">1</label> </div> <div class="form-check form-check-inline"> <input class="form-check-input" type="checkbox" id="inlineCheckbox2" value="option2"> <label for="inlineCheckbox2" class="checkbox-inline">2</label> </div> <div class="form-check form-check-inline"> <input class="form-check-input" type="checkbox" id="inlineCheckbox3" value="option3"> <label for="inlineCheckbox3" class="checkbox-inline">3</label> </div> </div> <div class="mt"> <div class="form-check form-check-inline"> <input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio1" value="option1"> <label for="inlineRadio1" class="radio-inline">1</label> </div> <div class="form-check form-check-inline"> <input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio2" value="option2"> <label for="inlineRadio2" class="radio-inline">2</label> </div> <div class="form-check form-check-inline"> <input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio3" value="option3"> <label for="inlineRadio3" class="radio-inline">3</label> </div> </div> </div> <!-- /Inline Checkboxes & Radios --> <div class="col-12"> <div class="inline-heading"> <h6>Custom Components</h6> </div> <div class="btn-box"> <div class="form-check"> <input class="form-check-input" type="checkbox" id="cb-custom-primary" checked=""> <label for="cb-custom-primary">Primary</label> </div> <div class="form-check form-check-info"> <input class="form-check-input" type="checkbox" id="cb-custom-info" checked=""> <label for="cb-custom-info">Info</label> </div> <div class="form-check form-check-success"> <input class="form-check-input" type="checkbox" id="cb-custom-success" checked=""> <label for="cb-custom-success">Success</label> </div> <div class="form-check form-check-warning"> <input class="form-check-input" type="checkbox" id="cb-custom-warning" checked=""> <label for="cb-custom-warning">Warning</label> </div> <div class="form-check form-check-danger"> <input class="form-check-input" type="checkbox" id="cb-custom-danger" checked=""> <label for="cb-custom-danger">Danger</label> </div> </div> </div>
Selects
<div class="row"> <div class="col-sm-6"> <select class="form-select form-control" aria-label="Default select example"> <option selected="">Open this select menu</option> <option value="1">One</option> <option value="2">Two</option> <option value="3">Three</option> </select> </div> <div class="col-sm-6"> <select class="form-select form-control multiple-select" multiple="" aria-label="multiple select example"> <option selected="">Open this select menu</option> <option value="1">One</option> <option value="2">Two</option> <option value="3">Three</option> </select> </div> </div>
Static controls
If you want to have <input readonly>
elements in your form styled as plain text, use the .form-control-plaintext
class to remove the default form field styling and preserve the correct margin and padding.
Sizing
Set heights using classes like .form-control-lg
and .form-control-sm
.
States
Input Group
Place one add-on or button on either side of an input. You may also place one on both sides of an input. Remember to place <label>
s outside the input group.
Multiple inputs
Multiple addons
Button addons
<div class="input-group"> <span class="input-group-text">First and last name</span> <input type="text" aria-label="First name" class="form-control"> <input type="text" aria-label="Last name" class="form-control"> </div> <div class="input-group mb-3"> <span class="input-group-text">$</span> <span class="input-group-text">0.00</span> <input type="text" class="form-control" aria-label="Dollar amount (with dot and two decimal places)"> </div> <div class="input-group"> <input type="text" class="form-control" aria-label="Dollar amount (with dot and two decimal places)"> <span class="input-group-text">$</span> <span class="input-group-text">0.00</span> </div> <div class="input-group mb-3"> <button class="btn btn-outline-secondary" type="button" id="button-addon1">Button</button> <input type="text" class="form-control" placeholder="" aria-label="Example text with button addon" aria-describedby="button-addon1"> </div> <div class="input-group mb-3"> <input type="text" class="form-control" placeholder="Recipient's username" aria-label="Recipient's username" aria-describedby="button-addon2"> <button class="btn btn-outline-secondary" type="button" id="button-addon2">Button</button> </div> <div class="input-group mb-3"> <button class="btn btn-outline-secondary" type="button">Button</button> <button class="btn btn-outline-secondary" type="button">Button</button> <input type="text" class="form-control" placeholder="" aria-label="Example text with two button addons"> </div> <div class="input-group mb-3"> <input type="text" class="form-control" placeholder="Recipient's username" aria-label="Recipient's username with two button addons"> <button class="btn btn-outline-secondary" type="button">Button</button> <button class="btn btn-outline-secondary" type="button">Button</button> </div> <div class="input-group mb-3"> <button class="btn btn-outline-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> <li><hr class="dropdown-divider"></li> <li><a class="dropdown-item" href="#">Separated link</a></li> </ul> <input type="text" class="form-control" aria-label="Text input with dropdown button"> </div> <div class="input-group mb-3"> <input type="text" class="form-control" aria-label="Text input with dropdown button"> <button class="btn btn-outline-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button> <ul class="dropdown-menu dropdown-menu-end"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> <li><hr class="dropdown-divider"></li> <li><a class="dropdown-item" href="#">Separated link</a></li> </ul> </div> <div class="input-group"> <button class="btn btn-outline-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Action before</a></li> <li><a class="dropdown-item" href="#">Another action before</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> <li><hr class="dropdown-divider"></li> <li><a class="dropdown-item" href="#">Separated link</a></li> </ul> <input type="text" class="form-control" aria-label="Text input with 2 dropdown buttons"> <button class="btn btn-outline-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button> <ul class="dropdown-menu dropdown-menu-end"> <li><a class="dropdown-item" href="#">Action</a></li> <li><a class="dropdown-item" href="#">Another action</a></li> <li><a class="dropdown-item" href="#">Something else here</a></li> <li><hr class="dropdown-divider"></li> <li><a class="dropdown-item" href="#">Separated link</a></li> </ul> </div>