Mga porma
Mga panig-ingnan ug mga giya sa paggamit alang sa mga istilo sa pagkontrol sa porma, mga kapilian sa layout, ug naandan nga mga sangkap alang sa paghimo og daghang lainlain nga porma.
Ang mga kontrol sa porma sa Bootstrap nagpalapad sa among Gi-reboot nga mga istilo sa porma nga adunay mga klase. Gamita kini nga mga klase aron makapili sa ilang gipahiangay nga mga pasundayag alang sa mas makanunayon nga paghubad sa mga browser ug aparato.
Siguruha nga mogamit usa ka angay type
nga kinaiya sa tanan nga mga input (pananglitan, email
alang sa email address o number
alang sa numerical nga impormasyon) aron mapahimuslan ang mas bag-ong mga kontrol sa input sama sa pag-verify sa email, pagpili sa numero, ug uban pa.
Ania ang usa ka dali nga pananglitan aron ipakita ang mga istilo sa porma sa Bootstrap. Padayon sa pagbasa alang sa dokumentasyon sa gikinahanglan nga mga klase, porma layout, ug uban pa.
<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>
Ang mga kontrol sa porma sa teksto—sama <input>
sa s, <select>
s, ug <textarea>
s—gi-istilo sa .form-control
klase. Apil ang mga estilo alang sa kinatibuk-ang panagway, kahimtang sa pagtutok, gidak-on, ug uban pa.
Siguruha nga susihon ang among naandan nga mga porma aron madugangan ang istilo <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>
Para sa mga input sa file, ibaylo ang .form-control
para sa .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>
Itakda ang mga gitas-on gamit ang mga klase sama sa .form-control-lg
ug .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>
Idugang ang readonly
boolean nga attribute sa usa ka input aron malikayan ang pagbag-o sa bili sa input. Ang read-only inputs makita nga mas gaan (sama sa mga disabled inputs), apan ipabilin ang standard cursor.
<input class="form-control" type="text" placeholder="Readonly input here…" readonly>
Kung gusto nimo nga adunay <input readonly>
mga elemento sa imong porma nga gi-istilo ingon yano nga teksto, gamita ang .form-control-plaintext
klase aron tangtangon ang default nga pag-istilo sa field sa porma ug ipreserba ang husto nga margin ug padding.
<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>
Ang mga default nga checkbox ug radyo gipaayo sa tabang sa .form-check
, usa ka klase alang sa duha ka tipo sa input nga nagpauswag sa layout ug pamatasan sa ilang mga elemento sa HTML . Ang mga checkbox kay para sa pagpili og usa o ubay-ubay nga mga opsyon sa usa ka lista, samtang ang mga radyo para sa pagpili og usa ka opsyon gikan sa daghan.
Gisuportahan ang mga disabled nga checkbox ug radyo, apan aron makahatag ug not-allowed
cursor sa hover sa ginikanan <label>
, kinahanglan nimong idugang ang disabled
attribute sa .form-check-input
. Ang disabled nga hiyas mag-aplay og mas gaan nga kolor aron makatabang sa pagpakita sa kahimtang sa input.
Ang mga checkbox ug mga radio nga gigamit kay gihimo para suportahan ang HTML-based form validation ug maghatag ug mugbo, accessible nga mga label. Sa ingon, ang atong <input>
s ug <label>
s kay managsuon nga elemento sukwahi sa <input>
sulod sa <label>
. Kini mao ang gamay nga mas verbose ingon nga kamo kinahanglan gayud nga espesipiko id
ug for
mga hiyas sa pag-asoy sa <input>
ug <label>
.
Sa kasagaran, ang bisan unsang gidaghanon sa mga checkbox ug radyo nga igsoon diha-diha dayon ibutang nga patindog ug haom nga ibutang sa .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>
Grupo ang mga checkbox o radyo sa parehas nga pinahigda nga laray pinaagi sa pagdugang .form-check-inline
sa bisan unsang .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>
Idugang .position-static
sa mga input sa sulod .form-check
nga walay bisan unsang label nga teksto. Hinumdumi nga maghatag gihapon og pipila ka matang sa label para sa mga teknolohiya nga makatabang (pananglitan, gamit ang 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>
Tungod kay ang Bootstrap magamit display: block
ug width: 100%
sa halos tanan namong mga kontrol sa porma, ang mga porma pinaagi sa default stack nga patindog. Ang dugang nga mga klase mahimong magamit aron usbon kini nga layout sa per-form nga basehan.
Ang .form-group
klase mao ang pinakasayon nga paagi sa pagdugang sa pipila ka istruktura sa mga porma. Naghatag kini usa ka flexible nga klase nga nagdasig sa husto nga paggrupo sa mga label, kontrol, opsyonal nga teksto sa tabang, ug pagporma sa pag-validate sa mensahe. Sa kasagaran kini magamit lamang margin-bottom
, apan kini mokuha og dugang nga mga estilo .form-inline
kon gikinahanglan. Gamita kini sa <fieldset>
s, <div>
s, o halos bisan unsang elemento.
<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>
Ang mas komplikado nga mga porma mahimong matukod gamit ang among mga klase sa grid. Gamita kini alang sa mga porma nga layout nga nanginahanglan daghang mga kolum, lainlain nga gilapdon, ug dugang nga mga kapilian sa pag-align.
<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>
Mahimo ka usab nga magbaylo .row
og .form-row
, usa ka kalainan sa among standard nga grid row nga nag-override sa default nga column gutters alang sa mas hugot ug mas compact nga mga layout.
<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>
Ang mas komplikado nga mga layout mahimo usab nga mahimo gamit ang grid system.
<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>
Paghimo og pinahigda nga mga porma nga adunay grid pinaagi sa pagdugang sa .row
klase aron maporma ang mga grupo ug gamit ang mga .col-*-*
klase aron itakda ang gilapdon sa imong mga label ug kontrol. Siguruha nga idugang .col-form-label
usab ang imong <label>
mga s aron kini patindog nga nakasentro sa ilang kauban nga mga kontrol sa porma.
Usahay, kinahanglan nimo nga gamiton ang mga gamit sa margin o padding aron mahimo ang hingpit nga pag-align nga kinahanglan nimo. Pananglitan, gitangtang namo ang padding-top
label sa among stacked radio inputs aron mas maayo nga i-align ang text baseline.
<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>
Siguroha nga gamiton .col-form-label-sm
o .col-form-label-lg
sa imong <label>
s o <legend>
s sa husto nga pagsunod sa gidak-on sa .form-control-lg
ug .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>
Sama sa gipakita sa miaging mga pananglitan, ang among grid system nagtugot kanimo sa pagbutang sa bisan unsang gidaghanon sa .col
s sulod sa usa .row
o .form-row
. Gibahin nila ang magamit nga gilapdon nga parehas sa taliwala nila. Mahimo ka usab nga magpili usa ka subset sa imong mga kolum aron makakuha og daghang o gamay nga espasyo, samtang ang nahabilin nga .col
s parehas nga gibahin ang nahabilin, nga adunay piho nga mga klase sa kolum sama sa .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>
Ang panig-ingnan sa ubos naggamit sa usa ka flexbox utility aron patindog nga isentro ang mga sulud ug mga pagbag .col
- o .col-auto
aron ang imong mga kolum makakuha ra ug daghang espasyo kung gikinahanglan. Sa laing paagi, ang mga gidak-on sa kolum mismo base sa mga sulod.
<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>
Mahimo nimong i-remix kana pag-usab sa mga klase sa kolum nga piho sa gidak-on.
<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>
Ug siyempre gisuportahan ang naandan nga mga kontrol sa porma .
<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>
Gamita ang .form-inline
klase sa pagpakita og serye sa mga label, mga kontrol sa porma, ug mga buton sa usa ka pinahigda nga laray. Ang mga kontrol sa porma sulod sa inline nga mga porma magkalahi gamay gikan sa ilang mga default nga estado.
- Ang mga kontrol mao ang
display: flex
, pag-collapse sa bisan unsa nga HTML nga puti nga luna ug nagtugot kanimo sa paghatag og alignment nga kontrol uban sa spacing ug flexbox utilities. - Ang mga kontrol ug input nga mga grupo makadawat
width: auto
aron i-override ang Bootstrap defaultwidth: 100%
. - Ang mga kontrol makita lang nga inline sa mga viewport nga labing menos 576px ang gilapdon aron i-account ang pig-ot nga viewport sa mga mobile device.
Mahimong kinahanglan nimo nga mano-mano nga sulbaron ang gilapdon ug pag-align sa indibidwal nga mga kontrol sa porma nga adunay mga gamit sa gilay-on (sama sa gipakita sa ubos). Katapusan, siguruha nga kanunay iapil ang usa <label>
sa matag kontrol sa porma, bisan kung kinahanglan nimo itago kini gikan sa mga bisita nga dili screenreader nga adunay .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>
Gisuportahan usab ang mga kontrol ug pagpili sa custom nga porma.
<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>
Mga alternatibo sa tinago nga mga label
Ang mga tabang nga teknolohiya sama sa screen readers magkaproblema sa imong mga porma kung dili ka mag-apil og label sa matag input. Alang niining mga inline nga porma, mahimo nimong tagoan ang mga label gamit ang .sr-only
klase. Adunay dugang nga alternatibong mga pamaagi sa paghatag og label para sa mga teknolohiya sa pagtabang, sama sa aria-label
, aria-labelledby
o title
attribute. Kung walay bisan usa niini, ang mga teknolohiya sa pagtabang mahimong mogamit sa placeholder
hiyas, kung naa, apan timan-i nga ang paggamit placeholder
ingon usa ka puli sa ubang mga pamaagi sa pag-label wala gitambagan.
Ang block-level nga tabang nga teksto sa mga porma mahimong mabuhat gamit ang .form-text
(nailhan kaniadto nga .help-block
sa v3). Ang inline nga tabang nga teksto mahimong dali nga ipatuman gamit ang bisan unsang inline nga elemento sa HTML ug mga klase sa utility sama sa .text-muted
.
Pag-asoy sa tabang nga teksto sa mga kontrol sa porma
Ang teksto sa tabang kinahanglan nga klaro nga adunay kalabotan sa pagkontrol sa porma nga adunay kalabotan sa paggamit sa aria-describedby
hiyas. Kini magsiguro nga ang mga teknolohiya nga makatabang—sama sa mga tigbasa sa screen—mopahibalo niini nga teksto sa tabang kung ang tiggamit mag-focus o mosulod sa kontrol.
Ang tabang nga teksto sa ubos sa mga input mahimong i-istilo sa .form-text
. Kini nga klase naglakip display: block
ug nagdugang pipila ka taas nga margin alang sa dali nga gilay-on gikan sa mga input sa ibabaw.
<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>
Ang inline nga teksto mahimong mogamit sa bisan unsang tipikal nga inline nga HTML nga elemento (bisan kini usa ka <small>
, <span>
, o uban pa) nga wala’y labaw sa usa ka klase sa utility.
<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>
Idugang ang disabled
boolean nga attribute sa usa ka input aron mapugngan ang mga interaksyon sa user ug himoon kini nga mas gaan.
Idugang ang disabled
hiyas sa usa <fieldset>
aron ma-disable ang tanang kontrol sa sulod.
<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 nga adunay mga angkla
Sa kasagaran, ang mga browser motratar sa tanang lumad nga mga kontrol sa porma ( <input>
, <select>
ug <button>
mga elemento) sulod sa a <fieldset disabled>
ingon nga disabled, nga magpugong sa keyboard ug mouse nga interaksyon niini. Bisan pa, kung ang imong porma naglakip usab sa <a ... class="btn btn-*">
mga elemento, kini hatagan lamang usa ka istilo sa pointer-events: none
. Ingon sa nahibal-an sa seksyon bahin sa disabled nga estado alang sa mga buton (ug labi na sa sub-section alang sa mga elemento sa angkla), kini nga kabtangan sa CSS wala pa gi-standardize ug dili hingpit nga gisuportahan sa Opera 18 ug sa ubos, o sa Internet Explorer 10, ug nakadaog. Dili mapugngan ang mga tiggamit sa keyboard nga maka-focus o ma-aktibo kini nga mga link. Busa aron luwas, gamita ang custom JavaScript aron ma-disable ang maong mga link.
Pagkaangay sa cross-browser
Samtang ang Bootstrap magamit kini nga mga istilo sa tanan nga mga browser, ang Internet Explorer 11 ug sa ubos dili hingpit nga nagsuporta sa disabled
hiyas sa usa ka <fieldset>
. Gamita ang custom JavaScript aron ma-disable ang fieldset niini nga mga browser.
Paghatag og bililhon, maaksiyonan nga feedback sa imong mga user nga adunay HTML5 nga pag-validate sa porma– anaa sa tanan namong gisuportahan nga mga browser . Pagpili gikan sa default nga feedback sa pag-validate sa browser, o ipatuman ang naandan nga mga mensahe sa among mga built-in nga klase ug starter JavaScript.
Labi namong girekomenda ang mga istilo sa pag-validate tungod kay ang mga default sa lumad nga browser wala gipahibalo sa mga magbabasa sa screen.
Ania kung giunsa ang pag-validate sa porma sa Bootstrap:
- Ang pag-validate sa porma sa HTML gipadapat pinaagi sa duha ka pseudo-classes sa CSS,
:invalid
ug:valid
. Kini magamit sa<input>
,<select>
, ug<textarea>
mga elemento. - Gisangkapan sa Bootstrap ang
:invalid
ug:valid
mga istilo sa.was-validated
klase sa ginikanan, nga sagad gigamit sa<form>
. Kung dili, ang bisan unsang gikinahanglan nga field nga walay bili makita nga dili balido sa pagkarga sa panid. Niining paagiha, mahimo nimong pilion kung kanus-a kini i-aktibo (kasagaran pagkahuman gisulayan ang pagsumite sa porma). - Isip usa ka fallback,
.is-invalid
ug.is-valid
ang mga klase mahimong gamiton imbes nga ang pseudo-classes para sa server side validation . Wala sila magkinahanglan og.was-validated
klase sa ginikanan. - Tungod sa mga pagpugong kung giunsa paglihok ang CSS, dili kami (sa pagkakaron) magamit ang mga istilo sa usa
<label>
nga moabut sa wala pa ang kontrol sa porma sa DOM nga wala’y tabang sa naandan nga JavaScript. - Gisuportahan sa tanang modernong browser ang constraint validation API , usa ka serye sa mga pamaagi sa JavaScript alang sa pag-validate sa mga kontrol sa porma.
- Ang mga mensahe sa feedback mahimong mogamit sa mga default sa browser (lahi alang sa matag browser, ug dili ma-estilo pinaagi sa CSS) o ang among naandan nga mga istilo sa feedback nga adunay dugang nga HTML ug CSS.
- Mahimo kang maghatag ug custom validity nga mga mensahe
setCustomValidity
sa JavaScript.
Uban niana sa hunahuna, hunahunaa ang mga mosunud nga demo para sa among naandan nga mga istilo sa pag-validate sa porma, opsyonal nga mga klase sa kilid sa server, ug mga default sa browser.
Para sa custom Bootstrap form validation nga mga mensahe, kinahanglan nimong idugang ang novalidate
boolean attribute sa imong <form>
. Gi-disable niini ang browser default feedback tooltips, apan naghatag gihapon og access sa form validation API sa JavaScript. Sulayi nga isumite ang porma sa ubos; ang among JavaScript makapugong sa isumite nga butones ug i-relay ang feedback kanimo.
Kung mosulay sa pagsumite, imong makita ang :invalid
ug :valid
mga istilo nga gipadapat sa imong mga kontrol sa porma.
<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>
Dili interesado sa kostumbre nga mga mensahe sa feedback sa validation o pagsulat sa JavaScript aron mabag-o ang mga pamatasan sa porma? Ang tanan maayo, mahimo nimong gamiton ang mga default sa browser. Sulayi ang pagsumite sa porma sa ubos. Depende sa imong browser ug OS, makakita ka og gamay nga lahi nga istilo sa feedback.
Samtang kini nga mga istilo sa feedback dili mahimong istilo sa CSS, mahimo gihapon nimo ipasibo ang teksto sa feedback pinaagi sa 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>
Among girekomendar ang paggamit sa client side validation, apan kon gikinahanglan nimo ang server side, mahimo nimong ipaila ang dili balido ug balido nga mga field sa porma nga adunay .is-invalid
ug .is-valid
. Timan-i nga .invalid-feedback
gisuportahan usab kini nga mga klase.
<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>
Ang among mga pananglitan nga mga porma nagpakita sa lumad nga teksto <input>
sa ibabaw, apan ang mga estilo sa pag-validate sa porma anaa alang sa among naandan nga mga kontrol sa porma, usab.
<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>
Kung gitugotan kini sa imong layout sa porma, mahimo nimong ibaylo ang mga .{valid|invalid}-feedback
klase alang sa .{valid|invalid}-tooltip
mga klase aron ipakita ang feedback sa pag-validate sa usa ka istilo nga tooltip. Siguruha nga adunay usa ka ginikanan nga position: relative
naa niini alang sa pagposisyon sa tooltip. Sa pananglitan sa ubos, ang among mga klase sa kolum aduna na niini, apan ang imong proyekto mahimong magkinahanglan og alternatibong setup.
<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>
Alang sa labi pa nga pag-customize ug pagkamakanunayon sa cross browser, gamita ang among hingpit nga naandan nga mga elemento sa porma aron ilisan ang mga default sa browser. Gitukod sila sa ibabaw sa semantic ug accessible nga markup, mao nga sila lig-on nga mga kapuli sa bisan unsang default nga kontrol sa porma.
Ang matag checkbox ug radyo giputos sa usa <div>
nga adunay usa ka igsoon <span>
aron mahimo ang among naandan nga kontrol ug usa <label>
alang sa kauban nga teksto. Sa istruktura, parehas kini nga pamaagi sa among default .form-check
.
Among gigamit ang sibling selector ( ~
) para sa tanan namong <input>
estado—sama :checked
—sa hustong paagi sa pag-istilo sa among custom nga indikasyon sa porma. Kung gihiusa sa .custom-control-label
klase, mahimo usab namon nga i-istilo ang teksto alang sa matag aytem base sa <input>
estado sa 's.
Among gitago ang default <input>
gamit opacity
ang ug gigamit ang .custom-control-label
sa paghimo og bag-ong indikasyon sa custom nga porma sa dapit niini nga adunay ::before
ug ::after
. Ikasubo nga dili kami makahimo og usa ka kostumbre gikan lamang sa <input>
tungod kay ang CSS content
dili molihok sa kana nga elemento.
Sa gisusi nga mga estado, gigamit namo ang base64 nga naka-embed nga SVG nga mga icon gikan sa Open Iconic . Naghatag kini kanamo sa labing kaayo nga kontrol alang sa pag-istilo ug pagposisyon sa mga browser ug aparato.
<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>
Ang mga custom nga checkbox mahimo usab nga mogamit sa :indeterminate
pseudo class kung mano-mano nga gitakda pinaagi sa JavaScript (walay magamit nga HTML attribute para sa pagtino niini).
Kung naggamit ka og jQuery, ang usa ka butang nga sama niini igo na:
<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>
Ang mga custom nga checkbox ug radyo mahimo usab nga ma-disable. Idugang ang disabled
boolean attribute sa <input>
ug ang custom indicator ug label nga deskripsyon awtomatik nga i-istilo.
<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>
Ang mga custom <select>
nga menu nagkinahanglan lamang ug custom nga klase, .custom-select
aron ma-trigger ang custom nga mga estilo.
<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>
Mahimo ka usab nga mopili gikan sa gagmay ug dagkong mga gipili nga kostumbre aron ipares ang among parehas nga kadako nga mga input sa teksto.
<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>
Gisuportahan multiple
usab ang attribute:
<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>
Sama sa size
kinaiya:
<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>
Ang pag-input sa file mao ang labing katingad-an sa hugpong ug nanginahanglan dugang nga JavaScript kung gusto nimo i-hook up kini gamit ang gamit nga Pilia ang file… ug gipili nga teksto sa ngalan sa file.
<div class="custom-file">
<input type="file" class="custom-file-input" id="customFile">
<label class="custom-file-label" for="customFile">Choose file</label>
</div>
Among gitago ang default nga file <input>
pinaagi sa opacity
ug sa baylo i-istilo ang <label>
. Ang buton gihimo ug gipahimutang sa ::after
. Katapusan, among gideklarar ang usa ka width
ug height
sa <input>
para sa hustong gilay-on alang sa naglibot nga sulod.
Ang :lang()
pseudo-class gigamit sa pagtugot sa paghubad sa "Browse" nga teksto ngadto sa ubang mga pinulongan. I-override o idugang ang mga entry sa $custom-file-text
variable sa Sass nga adunay tag nga lengguwahe ug gi-localize nga mga string. Ang English nga mga kuwerdas mahimong ipasibo sa samang paagi. Pananglitan, ania kung giunsa ang pagdugang usa ka paghubad sa Kinatsila (ang code sa pinulongang Espanyol mao ang es
):
Ania ang lang(es)
aksyon sa custom file input para sa Spanish translation:
<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>
Kinahanglan nimo nga itakda ang lengguwahe sa imong dokumento (o subtree niini) sa husto aron mapakita ang husto nga teksto. Mahimo kini gamit ang lang
attribute sa <html>
elemento o ang Content-Language
HTTP header , ug uban pang mga pamaagi.