Vormid
Vormi juhtimisstiilide, paigutussuvandite ja kohandatud komponentide näited ja kasutusjuhised mitmesuguste vormide loomiseks.
Bootstrapi vormijuhtelemendid laiendavad klasside abil taaskäivitatud vormistiile. Kasutage neid klasse nende kohandatud kuvade valimiseks, et muuta brauserites ja seadmetes ühtsem renderdus.
type
Kasutage kõigis sisendites (nt email
e-posti aadressi või numbrilise teabe jaoks) kindlasti sobivat atribuuti, number
et kasutada ära uuemaid sisendi juhtelemente, nagu e-posti kinnitamine, numbrivalik ja palju muud.
Siin on kiire näide Bootstrapi vormistiilide demonstreerimiseks. Lugege edasi dokumente vajalike klasside, vormide paigutuse ja muu kohta.
<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>
Tekstivormide juhtelemendid, nagu <input>
s, <select>
s ja <textarea>
s, on kujundatud koos .form-control
klassiga. Kaasatud on stiilid üldise välimuse, fookuse oleku, suuruse ja muu jaoks.
Stiili täiendamiseks uurige kindlasti meie kohandatud vorme<select>
.
<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>
Failisisendite jaoks vahetage .form-control
vastu .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>
Määrake kõrgused selliste klasside abil nagu .form-control-lg
ja .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>
Lisage readonly
sisendile Boolean atribuut, et vältida sisendi väärtuse muutmist. Kirjutuskaitstud sisendid näivad heledamad (nagu keelatud sisendid), kuid säilitavad standardse kursori.
<input class="form-control" type="text" placeholder="Readonly input here…" readonly>
Kui soovite, et <input readonly>
vormi elemendid oleksid laaditud lihttekstina, kasutage .form-control-plaintext
klassi, et eemaldada vormivälja vaikestiil ning säilitada õige veeris ja polster.
<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>
Vaikimisi märkeruudud ja raadiod on täiustatud mõlema sisenditüübi jaoks ühe klassi abil .form-check
, mis parandab nende HTML-elementide paigutust ja käitumist . Märkeruudud on mõeldud loendis ühe või mitme valiku valimiseks, raadiod aga ühe valiku valimiseks paljude hulgast.
Keelatud märkeruudud ja raadiod on toetatud, kuid not-allowed
kursori kuvamiseks vanemal <label>
, peate atribuudile lisama disabled
atribuudi .form-check-input
. Keelatud atribuut rakendab sisendi oleku näitamiseks heledamat värvi.
Märkeruudud ja raadiod on loodud toetama HTML-põhist vormide valideerimist ja pakkuma lühikesi, juurdepääsetavaid silte. Sellisena on meie <input>
s ja <label>
s vend-elemendid, mitte <input>
sees olevad elemendid <label>
. See on pisut üksikasjalikum, kuna peate määrama id
ja for
atribuudid, et seostada <input>
ja <label>
.
Vaikimisi paigutatakse suvaline arv märkeruutusid ja raadiosid, mis on otsene vend, vertikaalselt virnastatud ja sobivate vahedega .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>
Grupeerige märkeruudud või raadiod samale horisontaalsele reale, lisades .form-check-inline
need mis tahes .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>
Lisa .position-static
sisenditele, .form-check
millel pole sildi teksti. aria-label
Ärge unustage abitehnoloogiate (nt kasutades ) jaoks ikkagi mingit sildi vormingut .
<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>
Kuna Bootstrap rakendub peaaegu kõigile meie vormi juhtelementidele, virnastatakse vorme vaikimisi vertikaalselt display: block
. width: 100%
Selle paigutuse muutmiseks vormipõhiselt saab kasutada täiendavaid klasse.
Klass .form-group
on lihtsaim viis vormidele struktuuri lisamiseks. See pakub paindlikku klassi, mis julgustab siltide, juhtelementide, valikulise abiteksti ja vormi kinnitamise sõnumite õiget rühmitamist. Vaikimisi kehtib see ainult margin-bottom
, kuid .form-inline
vajadusel valib see täiendavaid stiile. Kasutage seda <fieldset>
s, <div>
s või peaaegu mis tahes muu elemendiga.
<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>
Meie ruudustikuklasside abil saab ehitada keerukamaid vorme. Kasutage neid vormipaigutuste jaoks, mis nõuavad mitut veergu, erinevat laiust ja täiendavaid joondussuvandeid.
<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>
Võite vahetada .row
ka .form-row
meie standardse ruudustikurea variandi vastu, mis alistab vaikeveergude vihmaveerennid tihedama ja kompaktsema paigutuse saamiseks.
<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>
Võresüsteemiga saab luua ka keerukamaid paigutusi.
<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>
Looge ruudustikuga horisontaalseid vorme, lisades .row
klassi rühmadesse ja kasutades .col-*-*
klasse oma siltide ja juhtelementide laiuse määramiseks. Lisage kindlasti ka .col-form-label
oma <label>
s-i, et need oleksid vertikaalselt keskel koos nendega seotud vormi juhtelementidega.
Mõnikord peate vajaliku täiusliku joonduse loomiseks kasutama veerise või polsterduse utiliite. Näiteks eemaldasime padding-top
virnastatud raadiosisendite sildi, et teksti lähtejoont paremini joondada.
<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>
Kasutage kindlasti .col-form-label-sm
või .col-form-label-lg
oma <label>
s või <legend>
s, et järgida õigesti ja .form-control-lg
suurust .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>
Nagu on näidatud eelmistes näidetes, võimaldab meie ruudustikusüsteem paigutada suvalise arvu .col
s-i a .row
või .form-row
. Nad jagavad saadaoleva laiuse nende vahel võrdselt. Võite valida ka veergude alamhulga, mis võtaks rohkem või vähem ruumi, samal ajal kui ülejäänud veerud .col
jagavad ülejäänud võrdselt teatud veeruklassidega, näiteks .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>
Allolev näide kasutab flexboxi utiliiti sisu vertikaalseks tsentreerimiseks ja muudab .col
seda .col-auto
nii, et veerud võtaksid ainult nii palju ruumi, kui vaja. Teisisõnu, veeru suurus põhineb sisul.
<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>
Seejärel saate seda uuesti miksida suurusespetsiifiliste veeruklassidega.
<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>
Ja loomulikult toetatakse kohandatud vormi juhtelemente .
<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>
Kasutage .form-inline
klassi siltide, vormi juhtelementide ja nuppude seeria kuvamiseks ühel horisontaalsel real. Vormide juhtelemendid tekstisiseses vormis erinevad veidi nende vaikeolekutest.
- Juhtelemendid on
display: flex
, ahendavad kõik HTML-i tühikud ja võimaldavad teil pakkuda joondusjuhtimist vahekauguste ja paindlike kasti utiliitidega. - Juhtelemendid ja sisendrühmad saavad
width: auto
Bootstrapi vaikeväärtuse alistadawidth: 100%
. - Juhtelemendid kuvatakse tekstisiseselt ainult vaateavades, mille laius on vähemalt 576 pikslit , et võtta arvesse kitsaid vaateavasid mobiilseadmetes.
Võimalik, et peate käsitsi lahendama üksikute vormi juhtelementide laiuse ja joondamise ruumivaheutiliitidega (nagu allpool näidatud). Lõpuks lisage alati <label>
iga vormi juhtelemendi juurde tähis, isegi kui peate selle peitma kasutajate eest, kes ei kasuta ekraanilugejat .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>
Toetatud on ka kohandatud vormi juhtelemendid ja valikud.
<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>
Alternatiivid peidetud siltidele
Abitehnoloogiatel, näiteks ekraanilugejatel, on teie vormidega probleeme, kui te ei lisa igale sisendile silti. Nende tekstisiseste vormide puhul saate .sr-only
klassi abil sildid peita. Abitehnoloogiate märgistamiseks on veel alternatiivseid meetodeid, näiteks atribuut aria-label
, aria-labelledby
või title
atribuut. Kui ükski neist pole olemas, võivad abitehnoloogiad kasutada placeholder
atribuuti, kui see on olemas, kuid pidage meeles, et placeholder
seda ei soovitata kasutada muude märgistamismeetodite asendajana.
Plokitaseme abiteksti vormides saab luua kasutades .form-text
(varem tuntud kui .help-block
v3). Tekstisisest abiteksti saab paindlikult rakendada, kasutades mis tahes tekstisiseseid HTML-elemente ja utiliidiklasse, näiteks .text-muted
.
Abiteksti seostamine vormi juhtelementidega
Abitekst peaks olema selgesõnaliselt seotud vormi juhtelemendiga, millega see aria-describedby
atribuudi kasutamisega seotud on. See tagab, et abitehnoloogiad (nt ekraanilugejad) teavitavad sellest abitekstist, kui kasutaja keskendub või juhtnupule siseneb.
Allolevate sisendite abiteksti saab stiilida .form-text
. See klass sisaldab display: block
ja lisab veidi ülemist veerist, et ülaltoodud sisenditest oleks lihtne vahemaa teha.
<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>
Tekstisisene tekst võib kasutada mis tahes tüüpilist tekstisisest HTML-elementi (olgu see siis <small>
, <span>
, või midagi muud), millel pole muud kui utiliidiklassi.
<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>
Lisage disabled
sisendile Boolean atribuut, et vältida kasutaja interaktsioone ja muuta see heledamaks.
Lisage disabled
atribuut atribuudile a <fieldset>
, et keelata kõik selles olevad juhtelemendid.
<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>
Hoiatus ankrutega
Vaikimisi käsitlevad brauserid kõiki a-s olevaid vormijuhtelemente ( <input>
ja elemente) keelatuna <select>
, vältides nii klaviatuuri kui ka hiire interaktsioone. Kui aga teie vorm sisaldab ka elemente, antakse neile ainult stiil . Nagu on märgitud nuppude keelatud olekut käsitlevas jaotises (ja eriti ankurelementide alamjaotises), ei ole see CSS-i atribuut veel standarditud ja seda ei toetata täielikult Opera 18 ja vanemates versioonides ega Internet Explorer 10-s ning võitis. Ärge takistage klaviatuuri kasutajatel neid linke fokuseerimast või aktiveerimast. Nii et turvalisuse huvides kasutage selliste linkide keelamiseks kohandatud JavaScripti.<button>
<fieldset disabled>
<a ... class="btn btn-*">
pointer-events: none
Brauseriülene ühilduvus
Kuigi Bootstrap rakendab neid stiile kõigis brauserites, ei toeta Internet Explorer 11 ja vanemad disabled
atribuuti täielikult <fieldset>
. Kasutage kohandatud JavaScripti väljakomplekti keelamiseks nendes brauserites.
Andke oma kasutajatele väärtuslikku ja kasulikku tagasisidet HTML5 vormi valideerimisega – see on saadaval kõigis meie toetatud brauserites . Valige brauseri vaikevalideerimise tagasiside hulgast või rakendage kohandatud sõnumeid meie sisseehitatud klasside ja käivitava JavaScriptiga.
Soovitame tungivalt kohandatud valideerimisstiile, kuna brauseri vaikeseadeid ekraanilugejatele ei teavitata.
Vormi valideerimine Bootstrapiga toimib järgmiselt.
- HTML-vormingu valideerimist rakendatakse CSS-i kahe pseudoklassi
:invalid
ja:valid
. See kehtib<input>
,<select>
, ja<textarea>
elementide kohta. - Bootstrap ulatub
:invalid
ja:valid
stiilid.was-validated
ülemklassile, mida tavaliselt rakendatakse<form>
. Vastasel juhul kuvatakse kõik ilma väärtuseta kohustuslikud väljad lehe laadimisel kehtetutena. Nii saate valida, millal need aktiveerida (tavaliselt pärast vormi esitamise katset). - Tagavarana võib serveripoolseks valideerimiseks
.is-invalid
pseudoklasside asemel.is-valid
kasutada klasse . Nad ei nõua vanemate klassi..was-validated
- CSS-i toimimise piirangute tõttu ei saa me (praegu)
<label>
ilma kohandatud JavaScripti abita rakendada stiile DOM-is enne vormijuhtelementi. - Kõik kaasaegsed brauserid toetavad piirangute valideerimise API -d , mis on JavaScripti meetodite seeria vormi juhtelementide kinnitamiseks.
- Tagasisidesõnumid võivad kasutada brauseri vaikeseadeid (iga brauseri puhul erinevad ja CSS-i kaudu stiilivabad) või meie kohandatud tagasisidestiile koos täiendava HTML-i ja CSS-iga.
- Saate esitada kohandatud kehtivussõnumeid
setCustomValidity
JavaScriptis.
Seda silmas pidades kaaluge meie kohandatud vormide valideerimisstiilide, valikuliste serveripoolsete klasside ja brauseri vaikeseadete jaoks järgmisi demosid.
Kohandatud Bootstrapi vormi valideerimissõnumite jaoks peate lisama novalidate
tõeväärtuse atribuudi oma <form>
. See keelab brauseri vaiketagasiside tööriistavihjed, kuid annab siiski juurdepääsu JavaScripti vormi valideerimise API-dele. Proovige esitada allolev vorm; meie JavaScript peatab saatmisnupu ja edastab teile tagasisidet.
Kui proovite esitada, näete vormi juhtelementidele rakendatud stiile :invalid
ja .:valid
<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>
Kas te pole huvitatud kohandatud valideerimise tagasiside sõnumitest või JavaScripti kirjutamisest, et muuta vormi käitumist? Kõik hea, saate kasutada brauseri vaikeseadeid. Proovige esitada allolev vorm. Sõltuvalt teie brauserist ja OS-ist näete veidi erinevat tagasisidestiili.
Kuigi neid tagasiside stiile ei saa CSS-iga kujundada, saate siiski JavaScripti kaudu tagasiside teksti kohandada.
<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>
Soovitame kasutada kliendipoolset valideerimist, kuid kui vajate serveripoolt, võite näidata kehtetud ja kehtivad vormiväljad märkidega .is-invalid
ja .is-valid
. Pange tähele, et .invalid-feedback
seda toetatakse ka nende klassidega.
<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>
Meie näidisvormid näitavad <input>
ülaltoodud natiivseid tekstilisi tekste, kuid vormide valideerimise stiilid on saadaval ka meie kohandatud vormi juhtelementide jaoks.
<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>
Kui teie vormipaigutus seda võimaldab, saate vahetada .{valid|invalid}-feedback
klassid .{valid|invalid}-tooltip
klasside vastu, et kuvada stiilis kohtspikris valideerimise tagasisidet. position: relative
Tööriistavihje positsioneerimiseks kasutage seda kindlasti lapsevanemal . Allolevas näites on see meie veeruklassidel juba olemas, kuid teie projekt võib vajada alternatiivset seadistust.
<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>
Veelgi suurema kohandamise ja brauseriülese järjepidevuse saavutamiseks kasutage brauseri vaikeseadete asendamiseks meie täielikult kohandatud vormielemente. Need on üles ehitatud semantilisele ja juurdepääsetavale märgistusele, nii et need asendavad tugevalt kõiki vaikevormi juhtelemente.
Iga märkeruut ja raadio on ümbritsetud a <div>
-ga koos õe -vennaga <span>
, et luua meie kohandatud juhtelement ja <label>
lisatud teksti jaoks a. Struktuuriliselt on see sama lähenemisviis, mis meie vaikeseade .form-check
.
Kasutame ~
kõigi oma <input>
olekute jaoks vendade valijat ( ) :checked
kohandatud vormi indikaatori õigeks stiiliks. Klassiga kombineerituna .custom-control-label
saame iga üksuse teksti <input>
oleku alusel ka stiilida.
Peidame vaikeväärtuse <input>
ja opacity
kasutame .custom-control-label
selle asemele uue kohandatud vormi indikaatori loomiseks ::before
ja ::after
. Kahjuks ei saa me ainult selle elemendi põhjal kohandatud luua, <input>
kuna CSS-id content
selle elemendiga ei tööta.
Märgitud olekus kasutame Base64 manustatud SVG ikoone Open Iconicult . See annab meile parima juhtimise stiili ja positsioneerimise üle brauserites ja seadmetes.
<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>
Kohandatud märkeruudud võivad kasutada ka :indeterminate
pseudoklassi, kui need on käsitsi määratud JavaScripti kaudu (selle määramiseks pole saadaval HTML-i atribuuti).
Kui kasutate jQueryt, peaks piisama sellisest:
<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>
Kohandatud märkeruudud ja raadiod saab ka keelata. Lisage disabled
boolean atribuut <input>
ja kohandatud indikaator ja sildi kirjeldus kujundatakse automaatselt.
<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>
Kohandatud <select>
menüüd vajavad .custom-select
kohandatud stiilide käivitamiseks ainult kohandatud klassi.
<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>
Samuti saate valida väikeste ja suurte kohandatud valikute hulgast, et need sobiksid meie sarnase suurusega tekstisisestustega.
<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>
Atribuuti multiple
toetatakse ka:
<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>
Nagu size
atribuut:
<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>
Failisisend on kõige räigeim ja nõuab täiendavat JavaScripti, kui soovite ühendada need funktsionaalse Vali fail… ja valitud failinime tekstiga.
<div class="custom-file">
<input type="file" class="custom-file-input" id="customFile">
<label class="custom-file-label" for="customFile">Choose file</label>
</div>
Peidame vaikefaili <input>
kaudu opacity
ja laadime selle asemel <label>
. Nupp genereeritakse ja asetatakse koos ::after
. Lõpuks deklareerime ümbritseva sisu jaoks õigete vahedega a width
ja .height
<input>
Pseudoklassi :lang()
kasutatakse "Sirvi" teksti tõlkimiseks teistesse keeltesse. $custom-file-text
Alistage või lisage Sassi muutuja kirjed asjakohase keelesildi ja lokaliseeritud stringidega. Ingliskeelseid stringe saab kohandada samal viisil. Näiteks saate hispaaniakeelse tõlke lisada järgmiselt (hispaania keele kood on es
):
Siin lang(es)
toimib hispaaniakeelse tõlke kohandatud failisisend:
<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>
Õige teksti kuvamiseks peate oma dokumendi (või selle alampuu) keele õigesti määrama. Seda saab teha muu hulgas elemendi lang
atribuudi<html>
või Content-Language
HTTP-päise abil.