Bentuk
Conto sareng tungtunan pamakean pikeun gaya kontrol formulir, pilihan perenah, sareng komponén khusus pikeun nyiptakeun rupa-rupa bentuk.
Kadali formulir Bootstrap ngalegaan gaya formulir Rebooted kami sareng kelas. Anggo kelas ieu pikeun milih kana tampilan anu disaluyukeun pikeun rendering anu langkung konsisten dina panyungsi sareng alat.
Pastikeun ngagunakeun type
atribut anu pas dina sadaya input (contona, email
kanggo alamat email atanapi number
kanggo inpormasi numerik) pikeun ngamangpaatkeun kadali input anu langkung énggal sapertos verifikasi email, pilihan nomer, sareng seueur deui.
Ieu conto gancang pikeun nunjukkeun gaya formulir Bootstrap. Tetep maca pikeun dokuméntasi ngeunaan kelas anu diperyogikeun, perenah formulir, sareng seueur deui.
<form>
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Enter email">
<small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
</div>
<div class="form-group">
<label for="exampleInputPassword1">Password</label>
<input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
</div>
<div class="form-check">
<input type="checkbox" class="form-check-input" id="exampleCheck1">
<label class="form-check-label" for="exampleCheck1">Check me out</label>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
Kadali bentuk tékstual—sapertos <input>
s, <select>
s, sareng <textarea>
s—digayakeun sareng .form-control
kelas. Kaasup gaya pikeun penampilan umum, kaayaan fokus, ukuran, sareng seueur deui.
Pastikeun pikeun ngajalajah bentuk custom kami pikeun gaya salajengna <select>
s.
<form>
<div class="form-group">
<label for="exampleFormControlInput1">Email address</label>
<input type="email" class="form-control" id="exampleFormControlInput1" placeholder="[email protected]">
</div>
<div class="form-group">
<label for="exampleFormControlSelect1">Example select</label>
<select class="form-control" id="exampleFormControlSelect1">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
</div>
<div class="form-group">
<label for="exampleFormControlSelect2">Example multiple select</label>
<select multiple class="form-control" id="exampleFormControlSelect2">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
</div>
<div class="form-group">
<label for="exampleFormControlTextarea1">Example textarea</label>
<textarea class="form-control" id="exampleFormControlTextarea1" rows="3"></textarea>
</div>
</form>
Pikeun input file, gentos .form-control
kana .form-control-file
.
<form>
<div class="form-group">
<label for="exampleFormControlFile1">Example file input</label>
<input type="file" class="form-control-file" id="exampleFormControlFile1">
</div>
</form>
Atur jangkung ngagunakeun kelas kawas .form-control-lg
na .form-control-sm
.
<input class="form-control form-control-lg" type="text" placeholder=".form-control-lg">
<input class="form-control" type="text" placeholder="Default input">
<input class="form-control form-control-sm" type="text" placeholder=".form-control-sm">
<select class="form-control form-control-lg">
<option>Large select</option>
</select>
<select class="form-control">
<option>Default select</option>
</select>
<select class="form-control form-control-sm">
<option>Small select</option>
</select>
Tambahkeun readonly
atribut boolean dina input pikeun nyegah modifikasi tina nilai input. Input ngan ukur dibaca sigana langkung hampang (sapertos input anu ditumpurkeun), tapi tetep kursor standar.
<input class="form-control" type="text" placeholder="Readonly input here…" readonly>
Upami anjeun hoyong unsur- <input readonly>
unsur dina bentuk anjeun ditataan salaku téks polos, paké .form-control-plaintext
kelas pikeun ngaleungitkeun gaya médan formulir standar sareng ngawétkeun margin sareng padding anu leres.
<form>
<div class="form-group row">
<label for="staticEmail" class="col-sm-2 col-form-label">Email</label>
<div class="col-sm-10">
<input type="text" readonly class="form-control-plaintext" id="staticEmail" value="[email protected]">
</div>
</div>
<div class="form-group row">
<label for="inputPassword" class="col-sm-2 col-form-label">Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="inputPassword" placeholder="Password">
</div>
</div>
</form>
<form class="form-inline">
<div class="form-group mb-2">
<label for="staticEmail2" class="sr-only">Email</label>
<input type="text" readonly class="form-control-plaintext" id="staticEmail2" value="[email protected]">
</div>
<div class="form-group mx-sm-3 mb-2">
<label for="inputPassword2" class="sr-only">Password</label>
<input type="password" class="form-control" id="inputPassword2" placeholder="Password">
</div>
<button type="submit" class="btn btn-primary mb-2">Confirm identity</button>
</form>
Kotak centang standar sareng radio dironjatkeun kalayan bantosan .form-check
, kelas tunggal pikeun duanana jinis input anu ningkatkeun tata perenah sareng paripolah elemen HTML na . Kotak centang kanggo milih hiji atanapi sababaraha pilihan dina daptar, sedengkeun radio kanggo milih hiji pilihan tina seueur.
Kotak centang sareng radio ditumpurkeun dirojong, tapi pikeun nyayogikeun not-allowed
kursor dina hover indungna <label>
, anjeun kedah nambihan disabled
atribut kana .form-check-input
. Atribut ditumpurkeun bakal nerapkeun warna torek pikeun mantuan nunjukkeun kaayaan input urang.
Kotak centang sareng radio dianggo pikeun ngadukung validasi bentuk dumasar HTML sareng nyayogikeun labél anu ringkes sareng tiasa diaksés. Sapertos kitu, <input>
s sareng <label>
s urang mangrupikeun unsur duduluran sabalikna tina <input>
jeroeun a <label>
. Ieu rada leuwih verbose anjeun kudu nangtukeun id
jeung for
atribut pakait jeung <input>
jeung <label>
.
Sacara standar, sajumlah kotak centang sareng radio anu janten dulur saharita bakal ditumpuk sacara vertikal sareng dipasihkeun sacara pas sareng .form-check
.
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="defaultCheck1">
<label class="form-check-label" for="defaultCheck1">
Default checkbox
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="defaultCheck2" disabled>
<label class="form-check-label" for="defaultCheck2">
Disabled checkbox
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1" value="option1" checked>
<label class="form-check-label" for="exampleRadios1">
Default radio
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios2" value="option2">
<label class="form-check-label" for="exampleRadios2">
Second default radio
</label>
</div>
<div class="form-check disabled">
<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios3" value="option3" disabled>
<label class="form-check-label" for="exampleRadios3">
Disabled radio
</label>
</div>
Grup kotak centang atawa radio dina baris horizontal sarua ku nambahkeun .form-check-inline
kana sagala .form-check
.
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="inlineCheckbox1" value="option1">
<label class="form-check-label" for="inlineCheckbox1">1</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="inlineCheckbox2" value="option2">
<label class="form-check-label" for="inlineCheckbox2">2</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="inlineCheckbox3" value="option3" disabled>
<label class="form-check-label" for="inlineCheckbox3">3 (disabled)</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio1" value="option1">
<label class="form-check-label" for="inlineRadio1">1</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio2" value="option2">
<label class="form-check-label" for="inlineRadio2">2</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio3" value="option3" disabled>
<label class="form-check-label" for="inlineRadio3">3 (disabled)</label>
</div>
Tambihkeun .position-static
kana input dina .form-check
anu henteu ngagaduhan téks labél. Inget pikeun tetep nyadiakeun sababaraha bentuk labél pikeun téknologi pitulung (contona, ngagunakeun aria-label
).
<div class="form-check">
<input class="form-check-input position-static" type="checkbox" id="blankCheckbox" value="option1" aria-label="...">
</div>
<div class="form-check">
<input class="form-check-input position-static" type="radio" name="blankRadio" id="blankRadio1" value="option1" aria-label="...">
</div>
Kusabab Bootstrap lumaku display: block
jeung width: 100%
ampir sakabéh kadali formulir urang, formulir bakal sacara standar tumpukan vertikal. kelas tambahan bisa dipaké pikeun rupa-rupa perenah ieu dina dasar per-formulir.
Kelas .form-group
mangrupikeun cara anu paling gampang pikeun nambihan sababaraha struktur kana bentuk. Eta nyadiakeun kelas fléksibel nu nyorong grup ditangtoskeun tina labél, kadali, téks pitulung pilihan, sarta olahtalatah validasi formulir. Sacara standar eta ngan lumaku margin-bottom
, tapi nyokot gaya tambahan dina .form-inline
sakumaha diperlukeun. Paké eta kalawan <fieldset>
s, <div>
s, atawa ampir sagala elemen séjén.
<form>
<div class="form-group">
<label for="formGroupExampleInput">Example label</label>
<input type="text" class="form-control" id="formGroupExampleInput" placeholder="Example input">
</div>
<div class="form-group">
<label for="formGroupExampleInput2">Another label</label>
<input type="text" class="form-control" id="formGroupExampleInput2" placeholder="Another input">
</div>
</form>
Bentuk anu langkung kompleks tiasa diwangun nganggo kelas grid kami. Paké ieu pikeun perenah formulir anu merlukeun sababaraha kolom, lebar variatif, sarta pilihan alignment tambahan.
<form>
<div class="row">
<div class="col">
<input type="text" class="form-control" placeholder="First name">
</div>
<div class="col">
<input type="text" class="form-control" placeholder="Last name">
</div>
</div>
</form>
Anjeun oge bisa ngaganti .row
pikeun .form-row
, variasi baris grid baku urang nu overrides talang kolom standar pikeun layouts tighter tur leuwih kompak.
<form>
<div class="form-row">
<div class="col">
<input type="text" class="form-control" placeholder="First name">
</div>
<div class="col">
<input type="text" class="form-control" placeholder="Last name">
</div>
</div>
</form>
Layout anu langkung kompleks ogé tiasa didamel nganggo sistem grid.
<form>
<div class="form-row">
<div class="form-group col-md-6">
<label for="inputEmail4">Email</label>
<input type="email" class="form-control" id="inputEmail4" placeholder="Email">
</div>
<div class="form-group col-md-6">
<label for="inputPassword4">Password</label>
<input type="password" class="form-control" id="inputPassword4" placeholder="Password">
</div>
</div>
<div class="form-group">
<label for="inputAddress">Address</label>
<input type="text" class="form-control" id="inputAddress" placeholder="1234 Main St">
</div>
<div class="form-group">
<label for="inputAddress2">Address 2</label>
<input type="text" class="form-control" id="inputAddress2" placeholder="Apartment, studio, or floor">
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="inputCity">City</label>
<input type="text" class="form-control" id="inputCity">
</div>
<div class="form-group col-md-4">
<label for="inputState">State</label>
<select id="inputState" class="form-control">
<option selected>Choose...</option>
<option>...</option>
</select>
</div>
<div class="form-group col-md-2">
<label for="inputZip">Zip</label>
<input type="text" class="form-control" id="inputZip">
</div>
</div>
<div class="form-group">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="gridCheck">
<label class="form-check-label" for="gridCheck">
Check me out
</label>
</div>
</div>
<button type="submit" class="btn btn-primary">Sign in</button>
</form>
Jieun formulir horizontal kalawan grid ku nambahkeun .row
kelas pikeun ngabentuk grup sarta ngagunakeun .col-*-*
kelas pikeun nangtukeun lebar labél jeung kadali Anjeun. Pastikeun pikeun nambahkeun .col-form-label
kana s Anjeun <label>
ogé ngarah nuju vertikal dipuseurkeun jeung kontrol formulir pakait maranéhanana.
Kadang-kadang, anjeun panginten kedah nganggo utilitas margin atanapi padding pikeun nyiptakeun alignment anu sampurna anu anjeun peryogikeun. Salaku conto, kami parantos ngahapus padding-top
labél input radio anu ditumpuk pikeun nyaluyukeun garis dasar téks.
<form>
<div class="form-group row">
<label for="inputEmail3" class="col-sm-2 col-form-label">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control" id="inputEmail3" placeholder="Email">
</div>
</div>
<div class="form-group row">
<label for="inputPassword3" class="col-sm-2 col-form-label">Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="inputPassword3" placeholder="Password">
</div>
</div>
<fieldset class="form-group">
<div class="row">
<legend class="col-form-label col-sm-2 pt-0">Radios</legend>
<div class="col-sm-10">
<div class="form-check">
<input class="form-check-input" type="radio" name="gridRadios" id="gridRadios1" value="option1" checked>
<label class="form-check-label" for="gridRadios1">
First radio
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="gridRadios" id="gridRadios2" value="option2">
<label class="form-check-label" for="gridRadios2">
Second radio
</label>
</div>
<div class="form-check disabled">
<input class="form-check-input" type="radio" name="gridRadios" id="gridRadios3" value="option3" disabled>
<label class="form-check-label" for="gridRadios3">
Third disabled radio
</label>
</div>
</div>
</div>
</fieldset>
<div class="form-group row">
<div class="col-sm-2">Checkbox</div>
<div class="col-sm-10">
<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="form-group row">
<div class="col-sm-10">
<button type="submit" class="btn btn-primary">Sign in</button>
</div>
</div>
</form>
Pastikeun anjeun nganggo .col-form-label-sm
atanapi .col-form-label-lg
ka anjeun <label>
atanapi ka anjeun <legend>
pikeun leres nuturkeun ukuran .form-control-lg
sareng .form-control-sm
.
<form>
<div class="form-group row">
<label for="colFormLabelSm" class="col-sm-2 col-form-label col-form-label-sm">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control form-control-sm" id="colFormLabelSm" placeholder="col-form-label-sm">
</div>
</div>
<div class="form-group row">
<label for="colFormLabel" class="col-sm-2 col-form-label">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control" id="colFormLabel" placeholder="col-form-label">
</div>
</div>
<div class="form-group row">
<label for="colFormLabelLg" class="col-sm-2 col-form-label col-form-label-lg">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control form-control-lg" id="colFormLabelLg" placeholder="col-form-label-lg">
</div>
</div>
</form>
Ditémbongkeun saperti dina conto saméméhna, Sistim grid kami ngidinan Anjeun pikeun nempatkeun sagala angka .col
s dina hiji .row
atawa .form-row
. Aranjeunna bakal ngabagi lebar anu sayogi di antara aranjeunna. Anjeun ogé tiasa milih sawaréh kolom anjeun pikeun nyandak langkung seueur atanapi kirang rohangan, sedengkeun sésa-sésa .col
ngabagi sésana, kalayan kelas kolom khusus sapertos .col-7
.
<form>
<div class="form-row">
<div class="col-7">
<input type="text" class="form-control" placeholder="City">
</div>
<div class="col">
<input type="text" class="form-control" placeholder="State">
</div>
<div class="col">
<input type="text" class="form-control" placeholder="Zip">
</div>
</div>
</form>
Conto di handap ngagunakeun utilitas flexbox pikeun vertikal puseur eusi na robah .col
jadi .col-auto
yén kolom anjeun ukur nyokot up saloba spasi sakumaha diperlukeun. Nempatkeun cara sejen, kolom ukuran sorangan dumasar kana eusi.
<form>
<div class="form-row align-items-center">
<div class="col-auto">
<label class="sr-only" for="inlineFormInput">Name</label>
<input type="text" class="form-control mb-2" id="inlineFormInput" placeholder="Jane Doe">
</div>
<div class="col-auto">
<label class="sr-only" for="inlineFormInputGroup">Username</label>
<div class="input-group mb-2">
<div class="input-group-prepend">
<div class="input-group-text">@</div>
</div>
<input type="text" class="form-control" id="inlineFormInputGroup" placeholder="Username">
</div>
</div>
<div class="col-auto">
<div class="form-check mb-2">
<input class="form-check-input" type="checkbox" id="autoSizingCheck">
<label class="form-check-label" for="autoSizingCheck">
Remember me
</label>
</div>
</div>
<div class="col-auto">
<button type="submit" class="btn btn-primary mb-2">Submit</button>
</div>
</div>
</form>
Anjeun teras tiasa remix éta sakali deui sareng kelas kolom ukuran-spésifik.
<form>
<div class="form-row align-items-center">
<div class="col-sm-3 my-1">
<label class="sr-only" for="inlineFormInputName">Name</label>
<input type="text" class="form-control" id="inlineFormInputName" placeholder="Jane Doe">
</div>
<div class="col-sm-3 my-1">
<label class="sr-only" for="inlineFormInputGroupUsername">Username</label>
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">@</div>
</div>
<input type="text" class="form-control" id="inlineFormInputGroupUsername" placeholder="Username">
</div>
</div>
<div class="col-auto my-1">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="autoSizingCheck2">
<label class="form-check-label" for="autoSizingCheck2">
Remember me
</label>
</div>
</div>
<div class="col-auto my-1">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
Sarta tangtu kadali formulir custom dirojong.
<form>
<div class="form-row align-items-center">
<div class="col-auto my-1">
<label class="mr-sm-2" for="inlineFormCustomSelect">Preference</label>
<select class="custom-select mr-sm-2" id="inlineFormCustomSelect">
<option selected>Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
<div class="col-auto my-1">
<div class="custom-control custom-checkbox mr-sm-2">
<input type="checkbox" class="custom-control-input" id="customControlAutosizing">
<label class="custom-control-label" for="customControlAutosizing">Remember my preference</label>
</div>
</div>
<div class="col-auto my-1">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
Paké .form-inline
kelas pikeun mintonkeun runtuyan labél, kontrol formulir, sarta tombol dina baris horizontal tunggal. Kadali formulir dina formulir inline rada béda ti kaayaan standarna.
- Kontrol nyaéta
display: flex
, ngancurkeun rohangan bodas HTML sareng ngamungkinkeun anjeun nyayogikeun kontrol alignment sareng utilitas jarak sareng flexbox . - Kadali sareng grup input nampi
width: auto
pikeun nimpa standar Bootstrapwidth: 100%
. - Kadali ngan muncul inline dina viewports nu lega sahenteuna 576px pikeun akun pikeun viewports sempit dina alat nu bagerak.
Anjeun bisa jadi kudu sacara manual alamat lebar tur alignment kontrol formulir individu kalawan utilitas spasi (sakumaha ditémbongkeun di handap). Anu pamungkas, pastikeun pikeun salawasna kaasup a <label>
kalawan unggal kontrol formulir, malah lamun kudu nyumputkeun eta ti datang non-screenreader kalawan .sr-only
.
<form class="form-inline">
<label class="sr-only" for="inlineFormInputName2">Name</label>
<input type="text" class="form-control mb-2 mr-sm-2" id="inlineFormInputName2" placeholder="Jane Doe">
<label class="sr-only" for="inlineFormInputGroupUsername2">Username</label>
<div class="input-group mb-2 mr-sm-2">
<div class="input-group-prepend">
<div class="input-group-text">@</div>
</div>
<input type="text" class="form-control" id="inlineFormInputGroupUsername2" placeholder="Username">
</div>
<div class="form-check mb-2 mr-sm-2">
<input class="form-check-input" type="checkbox" id="inlineFormCheck">
<label class="form-check-label" for="inlineFormCheck">
Remember me
</label>
</div>
<button type="submit" class="btn btn-primary mb-2">Submit</button>
</form>
Kadali bentuk khusus sareng pilihan ogé dirojong.
<form class="form-inline">
<label class="my-1 mr-2" for="inlineFormCustomSelectPref">Preference</label>
<select class="custom-select my-1 mr-sm-2" id="inlineFormCustomSelectPref">
<option selected>Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<div class="custom-control custom-checkbox my-1 mr-sm-2">
<input type="checkbox" class="custom-control-input" id="customControlInline">
<label class="custom-control-label" for="customControlInline">Remember my preference</label>
</div>
<button type="submit" class="btn btn-primary my-1">Submit</button>
</form>
Alternatif pikeun labél disumputkeun
Téknologi anu ngabantosan sapertos pamiarsa layar bakal gaduh masalah sareng formulir anjeun upami anjeun henteu ngalebetkeun labél pikeun unggal input. Pikeun bentuk inline ieu, anjeun tiasa nyumputkeun labél nganggo .sr-only
kelas. Aya deui metode alternatif pikeun nyayogikeun labél pikeun téknologi pitulung, sapertos aria-label
, aria-labelledby
atanapi title
atribut. Upami teu aya ieu, téknologi pitulung tiasa nganggo placeholder
atribut, upami aya, tapi perhatikeun yén panggunaan placeholder
salaku gaganti pikeun metode panyiri sanés henteu disarankeun.
Téks pitulung tingkat blok dina formulir bisa dijieun maké .form-text
(saméméhna katelah .help-block
dina v3). Téks pitulung inline tiasa dilaksanakeun sacara fleksibel nganggo unsur HTML inline sareng kelas utiliti sapertos .text-muted
.
Ngaitkeun téks pitulung sareng kadali formulir
Pitulung téks kudu eksplisit pakait sareng kontrol formulir eta relates to make aria-describedby
atribut. Ieu bakal mastikeun yén téknologi pitulung-sapertos pamiarsa layar-bakal ngumumkeun téks pitulung ieu nalika pangguna museurkeun atanapi ngalebetkeun kadali.
Pitulung téks di handap inputs bisa styled kalawan .form-text
. Kelas ieu kalebet display: block
sareng nambihan sababaraha margin luhur pikeun jarak anu gampang tina input di luhur.
<label for="inputPassword5">Password</label>
<input type="password" id="inputPassword5" class="form-control" aria-describedby="passwordHelpBlock">
<small id="passwordHelpBlock" class="form-text text-muted">
Your password must be 8-20 characters long, contain letters and numbers, and must not contain spaces, special characters, or emoji.
</small>
Téks inline tiasa nganggo unsur HTML inline naon waé (naha éta <small>
, <span>
, atanapi anu sanés) kalayan henteu langkung ti kelas utiliti.
<form class="form-inline">
<div class="form-group">
<label for="inputPassword6">Password</label>
<input type="password" id="inputPassword6" class="form-control mx-sm-3" aria-describedby="passwordHelpInline">
<small id="passwordHelpInline" class="text-muted">
Must be 8-20 characters long.
</small>
</div>
</form>
Tambihkeun disabled
atribut boolean dina input pikeun nyegah interaksi pangguna sareng ngajantenkeun langkung hampang.
Tambahkeun disabled
atribut ka a <fieldset>
nganonaktipkeun sakabeh kadali dina.
<form>
<fieldset disabled>
<div class="form-group">
<label for="disabledTextInput">Disabled input</label>
<input type="text" id="disabledTextInput" class="form-control" placeholder="Disabled input">
</div>
<div class="form-group">
<label for="disabledSelect">Disabled select menu</label>
<select id="disabledSelect" class="form-control">
<option>Disabled select</option>
</select>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" id="disabledFieldsetCheck" disabled>
<label class="form-check-label" for="disabledFieldsetCheck">
Can't check this
</label>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</fieldset>
</form>
Caveat kalawan jangkar
Sacara standar, panyungsi bakal ngubaran sagala kadali formulir asli ( <input>
, <select>
sarta <button>
elemen) di jero a <fieldset disabled>
salaku ditumpurkeun, nyegah duanana keyboard jeung interaksi mouse on aranjeunna. Sanajan kitu, lamun formulir Anjeun ogé ngawengku <a ... class="btn btn-*">
elemen, ieu ngan bakal dibéré gaya pointer-events: none
. Salaku nyatet dina bagian ngeunaan kaayaan ditumpurkeun pikeun tombol (sarta husus dina sub-bagian pikeun elemen jangkar), sipat CSS ieu teu acan standarisasi tur teu dirojong pinuh di Opera 18 tur handap, atawa dina Internet Explorer 10, sarta meunang. 'T nyegah pamaké keyboard teu bisa museurkeun atawa ngaktipkeun Tumbu ieu. Janten aman, paké JavaScript khusus pikeun nganonaktipkeun tautan sapertos kitu.
Kasaluyuan cross-browser
Nalika Bootstrap bakal nerapkeun gaya ieu dina sadaya panyungsi, Internet Explorer 11 sareng di handap henteu ngadukung sapinuhna disabled
atribut dina <fieldset>
. Anggo JavaScript khusus pikeun nganonaktipkeun set lapangan dina panyungsi ieu.
Nyadiakeun eupan balik anu berharga jeung bisa dipilampah ka pamaké anjeun kalawan validasi formulir HTML5– sadia dina sakabéh panyungsi anu dirojong ku kami . Pilih tina eupan balik validasi standar browser, atanapi laksanakeun pesen khusus sareng kelas anu diwangun sareng JavaScript ngamimitian.
Kami nyarankeun pisan gaya validasi khusus sabab standar browser asli henteu diumumkeun ka pamiarsa layar.
Ieu kumaha validasi formulir tiasa dianggo sareng Bootstrap:
- Validasi formulir HTML diterapkeun via dua kelas pseudo CSS,
:invalid
sareng:valid
. Ieu lumaku pikeun<input>
,<select>
, sarta<textarea>
elemen. - Bootstrap wengkuan
:invalid
sareng:valid
gaya ka kelas indungna.was-validated
, biasana dilarapkeun kana<form>
. Upami teu kitu, widang naon waé anu dibutuhkeun tanpa niléy némbongan sah dina beban halaman. Ku cara ieu, anjeun tiasa milih iraha ngaktipkeunana (biasana saatos kiriman formulir dicoba). - Salaku fallback a,
.is-invalid
sarta.is-valid
kelas bisa dipaké gaganti pseudo-kelas pikeun validasi sisi server . Aranjeunna teu merlukeun.was-validated
kelas indungna. - Kusabab konstrain dina cara CSS jalan, urang teu bisa (ayeuna) nerapkeun gaya ka
<label>
nu asalna saméméh kontrol formulir di DOM tanpa bantuan custom JavaScript. - Sadaya panyungsi modéren ngarojong API validasi konstrain , runtuyan métode JavaScript pikeun ngavalidasi kontrol formulir.
- Talatah eupan balik bisa ngagunakeun standar browser (béda pikeun tiap browser, sarta unstylable via CSS) atawa gaya eupan balik custom kami kalawan tambahan HTML jeung CSS.
- Anjeun tiasa nyayogikeun pesen validitas khusus
setCustomValidity
dina JavaScript.
Kalayan émut éta, pertimbangkeun demo di handap ieu pikeun gaya validasi formulir khusus urang, kelas sisi server opsional, sareng standar browser.
Pikeun pesen validasi formulir Bootstrap khusus, anjeun kedah nambihan novalidate
atribut boolean kana file <form>
. Ieu nganonaktipkeun tip alat umpan balik standar browser, tapi tetep nyayogikeun aksés kana API validasi formulir dina JavaScript. Coba kirimkeun formulir di handap; JavaScript urang bakal intercept tombol kirimkeun jeung relay eupan balik ka anjeun.
Nalika nyobian ngalebetkeun, anjeun bakal ningali gaya :invalid
sareng :valid
gaya anu diterapkeun kana kadali formulir anjeun.
<form class="needs-validation" novalidate>
<div class="form-row">
<div class="col-md-4 mb-3">
<label for="validationCustom01">First name</label>
<input type="text" class="form-control" id="validationCustom01" placeholder="First name" value="Mark" required>
<div class="valid-feedback">
Looks good!
</div>
</div>
<div class="col-md-4 mb-3">
<label for="validationCustom02">Last name</label>
<input type="text" class="form-control" id="validationCustom02" placeholder="Last name" value="Otto" required>
<div class="valid-feedback">
Looks good!
</div>
</div>
<div class="col-md-4 mb-3">
<label for="validationCustomUsername">Username</label>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroupPrepend">@</span>
</div>
<input type="text" class="form-control" id="validationCustomUsername" placeholder="Username" aria-describedby="inputGroupPrepend" required>
<div class="invalid-feedback">
Please choose a username.
</div>
</div>
</div>
</div>
<div class="form-row">
<div class="col-md-6 mb-3">
<label for="validationCustom03">City</label>
<input type="text" class="form-control" id="validationCustom03" placeholder="City" required>
<div class="invalid-feedback">
Please provide a valid city.
</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationCustom04">State</label>
<input type="text" class="form-control" id="validationCustom04" placeholder="State" required>
<div class="invalid-feedback">
Please provide a valid state.
</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationCustom05">Zip</label>
<input type="text" class="form-control" id="validationCustom05" placeholder="Zip" required>
<div class="invalid-feedback">
Please provide a valid zip.
</div>
</div>
</div>
<div class="form-group">
<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>
<button class="btn btn-primary" type="submit">Submit form</button>
</form>
<script>
// Example starter JavaScript for disabling form submissions if there are invalid fields
(function() {
'use strict';
window.addEventListener('load', function() {
// Fetch all the forms we want to apply custom Bootstrap validation styles to
var forms = document.getElementsByClassName('needs-validation');
// Loop over them and prevent submission
var validation = Array.prototype.filter.call(forms, function(form) {
form.addEventListener('submit', function(event) {
if (form.checkValidity() === false) {
event.preventDefault();
event.stopPropagation();
}
form.classList.add('was-validated');
}, false);
});
}, false);
})();
</script>
Teu kabetot dina pesen eupan balik validasi custom atawa nulis JavaScript pikeun ngarobah kabiasaan formulir? Sadayana saé, anjeun tiasa nganggo standar browser. Coba kirimkeun formulir di handap. Gumantung kana browser sareng OS anjeun, anjeun bakal ningali gaya eupan balik anu rada béda.
Bari gaya eupan balik ieu teu bisa gaya kalawan CSS, anjeun masih bisa ngaluyukeun téks eupan balik ngaliwatan JavaScript.
<form>
<div class="form-row">
<div class="col-md-4 mb-3">
<label for="validationDefault01">First name</label>
<input type="text" class="form-control" id="validationDefault01" placeholder="First name" value="Mark" required>
</div>
<div class="col-md-4 mb-3">
<label for="validationDefault02">Last name</label>
<input type="text" class="form-control" id="validationDefault02" placeholder="Last name" value="Otto" required>
</div>
<div class="col-md-4 mb-3">
<label for="validationDefaultUsername">Username</label>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroupPrepend2">@</span>
</div>
<input type="text" class="form-control" id="validationDefaultUsername" placeholder="Username" aria-describedby="inputGroupPrepend2" required>
</div>
</div>
</div>
<div class="form-row">
<div class="col-md-6 mb-3">
<label for="validationDefault03">City</label>
<input type="text" class="form-control" id="validationDefault03" placeholder="City" required>
</div>
<div class="col-md-3 mb-3">
<label for="validationDefault04">State</label>
<input type="text" class="form-control" id="validationDefault04" placeholder="State" required>
</div>
<div class="col-md-3 mb-3">
<label for="validationDefault05">Zip</label>
<input type="text" class="form-control" id="validationDefault05" placeholder="Zip" required>
</div>
</div>
<div class="form-group">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="invalidCheck2" required>
<label class="form-check-label" for="invalidCheck2">
Agree to terms and conditions
</label>
</div>
</div>
<button class="btn btn-primary" type="submit">Submit form</button>
</form>
Kami ngarékoméndasikeun ngagunakeun validasi sisi klien, tapi bisi anjeun merlukeun sisi server, anjeun tiasa nunjukkeun widang formulir sah tur valid kalawan .is-invalid
jeung .is-valid
. Catet yén .invalid-feedback
ogé dirojong ku kelas ieu.
<form>
<div class="form-row">
<div class="col-md-4 mb-3">
<label for="validationServer01">First name</label>
<input type="text" class="form-control is-valid" id="validationServer01" placeholder="First name" value="Mark" required>
<div class="valid-feedback">
Looks good!
</div>
</div>
<div class="col-md-4 mb-3">
<label for="validationServer02">Last name</label>
<input type="text" class="form-control is-valid" id="validationServer02" placeholder="Last name" value="Otto" required>
<div class="valid-feedback">
Looks good!
</div>
</div>
<div class="col-md-4 mb-3">
<label for="validationServerUsername">Username</label>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroupPrepend3">@</span>
</div>
<input type="text" class="form-control is-invalid" id="validationServerUsername" placeholder="Username" aria-describedby="inputGroupPrepend3" required>
<div class="invalid-feedback">
Please choose a username.
</div>
</div>
</div>
</div>
<div class="form-row">
<div class="col-md-6 mb-3">
<label for="validationServer03">City</label>
<input type="text" class="form-control is-invalid" id="validationServer03" placeholder="City" required>
<div class="invalid-feedback">
Please provide a valid city.
</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationServer04">State</label>
<input type="text" class="form-control is-invalid" id="validationServer04" placeholder="State" required>
<div class="invalid-feedback">
Please provide a valid state.
</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationServer05">Zip</label>
<input type="text" class="form-control is-invalid" id="validationServer05" placeholder="Zip" required>
<div class="invalid-feedback">
Please provide a valid zip.
</div>
</div>
</div>
<div class="form-group">
<div class="form-check">
<input class="form-check-input is-invalid" type="checkbox" value="" id="invalidCheck3" required>
<label class="form-check-label" for="invalidCheck3">
Agree to terms and conditions
</label>
<div class="invalid-feedback">
You must agree before submitting.
</div>
</div>
</div>
<button class="btn btn-primary" type="submit">Submit form</button>
</form>
Formulir conto urang nunjukkeun tékstual asli <input>
di luhur, tapi gaya validasi formulir ogé sayogi pikeun kadali bentuk khusus urang.
<form class="was-validated">
<div class="custom-control custom-checkbox mb-3">
<input type="checkbox" class="custom-control-input" id="customControlValidation1" required>
<label class="custom-control-label" for="customControlValidation1">Check this custom checkbox</label>
<div class="invalid-feedback">Example invalid feedback text</div>
</div>
<div class="custom-control custom-radio">
<input type="radio" class="custom-control-input" id="customControlValidation2" name="radio-stacked" required>
<label class="custom-control-label" for="customControlValidation2">Toggle this custom radio</label>
</div>
<div class="custom-control custom-radio mb-3">
<input type="radio" class="custom-control-input" id="customControlValidation3" name="radio-stacked" required>
<label class="custom-control-label" for="customControlValidation3">Or toggle this other custom radio</label>
<div class="invalid-feedback">More example invalid feedback text</div>
</div>
<div class="form-group">
<select class="custom-select" required>
<option value="">Open this select menu</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<div class="invalid-feedback">Example invalid custom select feedback</div>
</div>
<div class="custom-file">
<input type="file" class="custom-file-input" id="validatedCustomFile" required>
<label class="custom-file-label" for="validatedCustomFile">Choose file...</label>
<div class="invalid-feedback">Example invalid custom file feedback</div>
</div>
</form>
Upami perenah formulir anjeun ngamungkinkeun, anjeun tiasa ngagentos .{valid|invalid}-feedback
kelas pikeun .{valid|invalid}-tooltip
kelas pikeun ningalikeun eupan balik validasi dina tooltip gaya. Pastikeun gaduh indungna sareng position: relative
éta pikeun posisi tooltip. Dina conto di handap, kelas kolom kami geus boga ieu, tapi proyék anjeun bisa merlukeun hiji setelan alternatif.
<form class="needs-validation" novalidate>
<div class="form-row">
<div class="col-md-4 mb-3">
<label for="validationTooltip01">First name</label>
<input type="text" class="form-control" id="validationTooltip01" placeholder="First name" value="Mark" required>
<div class="valid-tooltip">
Looks good!
</div>
</div>
<div class="col-md-4 mb-3">
<label for="validationTooltip02">Last name</label>
<input type="text" class="form-control" id="validationTooltip02" placeholder="Last name" value="Otto" required>
<div class="valid-tooltip">
Looks good!
</div>
</div>
<div class="col-md-4 mb-3">
<label for="validationTooltipUsername">Username</label>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text" id="validationTooltipUsernamePrepend">@</span>
</div>
<input type="text" class="form-control" id="validationTooltipUsername" placeholder="Username" aria-describedby="validationTooltipUsernamePrepend" required>
<div class="invalid-tooltip">
Please choose a unique and valid username.
</div>
</div>
</div>
</div>
<div class="form-row">
<div class="col-md-6 mb-3">
<label for="validationTooltip03">City</label>
<input type="text" class="form-control" id="validationTooltip03" placeholder="City" required>
<div class="invalid-tooltip">
Please provide a valid city.
</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationTooltip04">State</label>
<input type="text" class="form-control" id="validationTooltip04" placeholder="State" required>
<div class="invalid-tooltip">
Please provide a valid state.
</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationTooltip05">Zip</label>
<input type="text" class="form-control" id="validationTooltip05" placeholder="Zip" required>
<div class="invalid-tooltip">
Please provide a valid zip.
</div>
</div>
</div>
<button class="btn btn-primary" type="submit">Submit form</button>
</form>
Pikeun langkung kustomisasi sareng konsistensi panyungsi silang, paké elemen formulir khusus kami pikeun ngagentos standar browser. Éta diwangun dina luhureun markup semantik sareng tiasa diaksés, janten aranjeunna gaganti padet pikeun kontrol formulir standar.
Tiap kotak centang jeung radio dibungkus dina hiji <div>
jeung duduluran <span>
pikeun nyieun kontrol custom kami sarta <label>
pikeun téks nu dibéré bareng. Sacara stuktur, ieu pendekatan anu sami sareng standar urang .form-check
.
Urang make pamilih duduluran ( ~
) pikeun sakabéh <input>
nagara bagian urang-kawas - :checked
mun leres gaya indikator formulir custom urang. Lamun digabungkeun jeung .custom-control-label
kelas, urang ogé bisa gaya téks pikeun tiap item dumasar kana kaayaan <input>
's.
Kami nyumputkeun standar <input>
sareng opacity
nganggo .custom-control-label
pikeun ngawangun indikator bentuk khusus anyar dina tempatna ::before
sareng ::after
. Hanjakal urang teu bisa ngawangun hiji custom ti ngan <input>
sabab CSS urang content
teu dianggo dina unsur éta.
Dina kaayaan dipariksa, kami nganggo base64 embedded ikon SVG ti Open Iconic . Ieu nyadiakeun kami kadali pangalusna pikeun styling jeung posisi sakuliah browser jeung alat.
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="customCheck1">
<label class="custom-control-label" for="customCheck1">Check this custom checkbox</label>
</div>
Kotak centang custom ogé bisa ngagunakeun :indeterminate
kelas pseudo lamun diatur sacara manual via JavaScript (teu aya atribut HTML sadia pikeun nangtukeun eta).
Upami anjeun nganggo jQuery, hal sapertos kieu kedah cekap:
<div class="custom-control custom-radio">
<input type="radio" id="customRadio1" name="customRadio" class="custom-control-input">
<label class="custom-control-label" for="customRadio1">Toggle this custom radio</label>
</div>
<div class="custom-control custom-radio">
<input type="radio" id="customRadio2" name="customRadio" class="custom-control-input">
<label class="custom-control-label" for="customRadio2">Or toggle this other custom radio</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="customRadioInline1" name="customRadioInline1" class="custom-control-input">
<label class="custom-control-label" for="customRadioInline1">Toggle this custom radio</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="customRadioInline2" name="customRadioInline1" class="custom-control-input">
<label class="custom-control-label" for="customRadioInline2">Or toggle this other custom radio</label>
</div>
Kotak centang khusus sareng radio ogé tiasa ditumpurkeun. Tambihkeun disabled
atribut boolean kana <input>
sareng indikator khusus sareng déskripsi labél bakal otomatis digayakeun.
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="customCheckDisabled" disabled>
<label class="custom-control-label" for="customCheckDisabled">Check this custom checkbox</label>
</div>
<div class="custom-control custom-radio">
<input type="radio" id="radio3" name="radioDisabled" id="customRadioDisabled" class="custom-control-input" disabled>
<label class="custom-control-label" for="customRadioDisabled">Toggle this custom radio</label>
</div>
ménu custom <select>
perlu ngan hiji kelas custom, .custom-select
pikeun memicu gaya custom.
<select class="custom-select">
<option selected>Open this select menu</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
Anjeun ogé tiasa milih tina pilihan khusus leutik sareng ageung pikeun cocog sareng input téks ukuran anu sami.
<select class="custom-select custom-select-lg mb-3">
<option selected>Open this select menu</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<select class="custom-select custom-select-sm">
<option selected>Open this select menu</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
Atribut multiple
ieu ogé dirojong:
<select class="custom-select" multiple>
<option selected>Open this select menu</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
Salaku size
atribut:
<select class="custom-select" size="3">
<option selected>Open this select menu</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
Input file mangrupikeun kebat anu paling pikasieuneun sareng ngabutuhkeun JavaScript tambahan upami anjeun hoyong ngaitkeunana sareng fungsional Pilih file… sareng téks nami file anu dipilih.
<div class="custom-file">
<input type="file" class="custom-file-input" id="customFile">
<label class="custom-file-label" for="customFile">Choose file</label>
</div>
Urang nyumputkeun file standar <input>
via opacity
na gantina gaya <label>
. Tombol dihasilkeun sarta diposisikan kalawan ::after
. Panungtungan, urang ngadéklarasikeun a width
na height
on <input>
pikeun spasi ditangtoskeun pikeun eusi sabudeureun.
Kelas :lang()
pseudo digunakeun pikeun ngidinan pikeun narjamahkeun téks "Browse" kana basa séjén. Override atanapi tambahkeun éntri kana variabel Sass sareng tag basa$custom-file-text
anu relevan sareng senar anu dilokalkeun. Senar Inggris tiasa disaluyukeun ku cara anu sami. Contona, ieu kumaha carana nambahkeun tarjamah Spanyol (kode basa Spanyol nyaéta ):es
Ieu lang(es)
tindakan dina input file khusus pikeun tarjamahan Spanyol:
<div class="custom-file">
<input type="file" class="custom-file-input" id="customFileLang" lang="es">
<label class="custom-file-label" for="customFileLang">Seleccionar Archivo</label>
</div>
Anjeun kedah nyetél basa dokumén anjeun (atanapi subtree) leres supados téks anu leres tiasa ditingalikeun. Ieu tiasa dilakukeun nganggo atribut lang
dina unsur <html>
atanapi Content-Language
lulugu HTTP , diantara metode anu sanés.