in English

Formlar

Form denetimi stilleri, düzen seçenekleri ve çok çeşitli formlar oluşturmaya yönelik özel bileşenler için örnekler ve kullanım yönergeleri.

genel bakış

Bootstrap'in form kontrolleri , sınıflarla Yeniden Başlatılan form stillerimizi genişletir. Tarayıcılar ve cihazlar arasında daha tutarlı bir işleme için özelleştirilmiş ekranlarını seçmek için bu sınıfları kullanın.

E -posta doğrulama, numara seçimi ve daha fazlası gibi daha yeni giriş kontrollerinden yararlanmak için tüm girişlerde (örneğin, e-posta adresi veya sayısal bilgiler için) uygun bir typeöznitelik kullandığınızdan emin olun .emailnumber

Bootstrap'in form stillerini göstermek için hızlı bir örnek. Gerekli sınıflar, form düzeni ve daha fazlasıyla ilgili belgeler için okumaya devam edin.

E-postanızı asla başkalarıyla paylaşmayacağız.
<form>
  <div class="form-group">
    <label for="exampleInputEmail1">Email address</label>
    <input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp">
    <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">
  </div>
  <div class="form-group 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>

Form kontrolleri

Metinsel form denetimleri ( <input>s, <select>s ve s gibi) sınıfa <textarea>göre biçimlendirilir . .form-controlGenel görünüm, odak durumu, boyutlandırma ve daha fazlası için stiller dahildir.

Daha fazla stil için özel formlarımızı keşfettiğinizden emin olun <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>

Dosya girişleri için, .form-controlfor .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>

boyutlandırma

.form-control-lgve gibi sınıfları kullanarak yükseklikleri ayarlayın .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>

Sadece oku

readonlyGirdinin değerinin değiştirilmesini önlemek için bir girdiye boolean niteliğini ekleyin . Salt okunur girişler daha açık görünür (tıpkı devre dışı bırakılmış girişler gibi), ancak standart imleci korur.

<input class="form-control" type="text" placeholder="Readonly input here..." readonly>

Salt okunur düz metin

<input readonly>Formunuzdaki öğelerin düz metin olarak biçimlendirilmesini istiyorsanız .form-control-plaintext, varsayılan form alanı stilini kaldırmak ve doğru kenar boşluğunu ve dolguyu korumak için sınıfı kullanın.

<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">
    </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>

Aralık Girişleri

kullanarak yatay olarak kaydırılabilir aralık girişlerini ayarlayın .form-control-range.

<form>
  <div class="form-group">
    <label for="formControlRange">Example Range input</label>
    <input type="range" class="form-control-range" id="formControlRange">
  </div>
</form>

Onay kutuları ve radyolar

Varsayılan onay kutuları ve radyolar , HTML öğelerinin düzenini ve davranışını iyileştiren her iki giriş türü için tek bir sınıf yardımıyla .form-checkgeliştirilir . Onay kutuları bir listedeki bir veya birkaç seçeneği seçmek içindir, radyolar ise birçok seçenek arasından birini seçmek içindir.

Devre dışı bırakılmış onay kutuları ve radyolar desteklenir. disabledÖznitelik, girişin durumunu belirtmek için daha açık bir renk uygular .

Onay kutuları ve radyo düğmeleri, HTML tabanlı form doğrulamasını destekler ve özlü, erişilebilir etiketler sağlar. Bu nedenle, <input>s ve s öğelerimiz, a içindeki bir <label>öğenin aksine kardeş öğelerdir . Bu biraz daha ayrıntılıdır, çünkü belirtmeniz gerekir ve ve ile ilişkilendirmek için nitelikler .<input><label>idfor<input><label>

Varsayılan (yığılmış)

Varsayılan olarak, hemen kardeş olan herhangi bir sayıda onay kutusu ve telsiz dikey olarak yığılır ve ile uygun şekilde aralıklanır .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">
  <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>

Çizgide

.form-check-inlineHerhangi birine ekleyerek onay kutularını veya radyoları aynı yatay satırda gruplayın .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>

etiketsiz

İçinde etiket metni olmayan .position-staticgirdilere ekleyin . .form-checkYardımcı teknolojiler için bir tür erişilebilir ad sağlamayı unutmayın (örneğin, kullanarak 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>

Düzen

Bootstrap display: blockve width: 100%hemen hemen tüm form kontrollerimiz için geçerli olduğundan, formlar varsayılan olarak dikey olarak istiflenir. Bu düzeni form bazında değiştirmek için ek sınıflar kullanılabilir.

Grup grupları

Sınıf .form-group, formlara yapı eklemenin en kolay yoludur. Etiketlerin, kontrollerin, isteğe bağlı yardım metninin ve form doğrulama iletilerinin uygun şekilde gruplandırılmasını teşvik eden esnek bir sınıf sağlar. Varsayılan olarak yalnızca geçerlidir margin-bottom, ancak gerektiğinde ek stiller alır .form-inline. Onu <fieldset>s, <div>s veya hemen hemen başka herhangi bir öğeyle kullanın.

<form>
  <div class="form-group">
    <label for="formGroupExampleInput">Example label</label>
    <input type="text" class="form-control" id="formGroupExampleInput" placeholder="Example input placeholder">
  </div>
  <div class="form-group">
    <label for="formGroupExampleInput2">Another label</label>
    <input type="text" class="form-control" id="formGroupExampleInput2" placeholder="Another input placeholder">
  </div>
</form>

Form ızgarası

Grid sınıflarımız kullanılarak daha karmaşık formlar oluşturulabilir. Bunları birden çok sütun, çeşitli genişlikler ve ek hizalama seçenekleri gerektiren form düzenleri için kullanın.

<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>

Form satırı

Ayrıca , daha sıkı ve daha kompakt düzenler için varsayılan sütun oluklarını geçersiz kılan standart ızgara sıramızın bir varyasyonu olan ile .rowtakas edebilirsiniz..form-row

<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>

Izgara sistemi ile daha karmaşık düzenler de oluşturulabilir.

<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">
    </div>
    <div class="form-group col-md-6">
      <label for="inputPassword4">Password</label>
      <input type="password" class="form-control" id="inputPassword4">
    </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>

yatay form

.rowGrupları oluşturmak için sınıfı ekleyerek ve .col-*-*etiketlerinizin ve denetimlerinizin genişliğini belirtmek için sınıfları kullanarak ızgarayla yatay formlar oluşturun. mutlaka .col-form-labelekleyin<label>İlgili form kontrolleriyle dikey olarak ortalanmaları için s'lerinizi de

Bazen, ihtiyacınız olan mükemmel hizalamayı oluşturmak için kenar boşluğu veya dolgu yardımcı programlarını kullanmanız gerekebilir. Örneğin, padding-topmetin taban çizgisini daha iyi hizalamak için yığılmış radyo girişleri etiketimizi kaldırdık.

radyolar
<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">
    </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">
    </div>
  </div>
  <fieldset class="form-group row">
    <legend class="col-form-label col-sm-2 float-sm-left 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>
  </fieldset>
  <div class="form-group row">
    <div class="col-sm-10 offset-sm-2">
      <div class="form-check">
        <input class="form-check-input" type="checkbox" id="gridCheck1">
        <label class="form-check-label" for="gridCheck1">
          Example checkbox
        </label>
      </div>
    </div>
  </div>
  <div class="form-group row">
    <div class="col-sm-10">
      <button type="submit" class="btn btn-primary">Sign in</button>
    </div>
  </div>
</form>
Yatay form etiket boyutlandırma

ve boyutunu doğru bir şekilde takip etmek için veya .col-form-label-sms veya s'nizi kullandığınızdan emin olun ..col-form-label-lg<label><legend>.form-control-lg.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>

Sütun boyutlandırma

Önceki örneklerde gösterildiği gibi, ızgara sistemimiz a veya .coliçine istediğiniz sayıda s yerleştirmenize izin verir . Mevcut genişliği aralarında eşit olarak bölerler. Ayrıca, daha fazla veya daha az yer kaplamak için sütunlarınızın bir alt kümesini seçebilir, geri kalanlar ise aşağıdaki gibi belirli sütun sınıflarıyla geri kalanını eşit olarak böler ..row.form-row.col.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>

Otomatik boyutlandırma

Aşağıdaki örnek, içeriği dikey olarak ortalamak için bir flexbox yardımcı programı kullanır ve sütunlarınız yalnızca gerektiği kadar yer kaplayacak şekilde .coldeğişir . .col-autoBaşka bir deyişle, sütun, içeriğe göre boyutlandırılır.

@
<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>

Daha sonra bunu boyuta özel sütun sınıflarıyla yeniden karıştırabilirsiniz.

@
<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>

Ve elbette özel form kontrolleri desteklenir.

<form>
  <div class="form-row align-items-center">
    <div class="col-auto my-1">
      <label class="mr-sm-2 sr-only" 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>

satır içi formlar

.form-inlineTek bir yatay satırda bir dizi etiket, form denetimi ve düğme görüntülemek için sınıfı kullanın . Satır içi formlardaki form kontrolleri, varsayılan durumlarından biraz farklıdır.

  • Kontroller , herhangi bir HTML beyaz alanını daraltır ve boşluk ve esnek kutu yardımcı programları display: flexile hizalama kontrolü sağlamanıza izin verir .
  • width: autoÖnyükleme varsayılanını geçersiz kılmak için denetimler ve giriş grupları alınır width: 100%.
  • Kontroller , yalnızca mobil cihazlarda dar görüntü alanlarını hesaba katmak için en az 576 piksel genişliğindeki görüntü alanlarında satır içi görünür .

Boşluk yardımcı programlarıyla (aşağıda gösterildiği gibi) ayrı form denetimlerinin genişliğini ve hizalamasını manuel olarak ele almanız gerekebilir . <label>Son olarak, ekran okuyucu olmayan ziyaretçilerden gizlemeniz gerekse bile, her form denetimine her zaman bir a eklediğinizden emin olun .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>

Özel form kontrolleri ve seçimleri de desteklenir.

<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>
Gizli etiketlere alternatifler

Her giriş için bir etiket eklemezseniz, ekran okuyucular gibi yardımcı teknolojiler formlarınızda sorun yaşar. .sr-onlyBu satır içi formlar için sınıfı kullanarak etiketleri gizleyebilirsiniz . aria-label, aria-labelledbyveya titleözniteliği gibi yardımcı teknolojiler için bir etiket sağlamanın başka alternatif yöntemleri de vardır . Bunların hiçbiri yoksa, yardımcı teknolojiler placeholder, varsa, özniteliği kullanmaya başvurabilir, ancak placeholderdiğer etiketleme yöntemlerinin yerine kullanılmasının tavsiye edilmediğine dikkat edin.

Yardım Metni

Formlardaki blok düzeyinde yardım metni .form-text(önceden .help-blockv3'te biliniyordu) kullanılarak oluşturulabilir. Satır içi yardım metni, herhangi bir satır içi HTML öğesi ve gibi yardımcı program sınıfları kullanılarak esnek bir şekilde uygulanabilir .text-muted.

Yardım metnini form kontrolleriyle ilişkilendirme

Yardım metni, özniteliği kullanmakla ilgili olduğu form denetimiyle açıkça ilişkilendirilmelidir aria-describedby. Bu, ekran okuyucular gibi yardımcı teknolojilerin, kullanıcı odaklandığında veya kontrole girdiğinde bu yardım metnini duyurmasını sağlayacaktır.

Girişlerin altındaki yardım metni ile biçimlendirilebilir .form-text. Bu sınıf, display: blockyukarıdaki girdilerden kolay boşluk bırakmak için bir miktar üst kenar boşluğu içerir ve ekler.

Şifreniz 8-20 karakter uzunluğunda olmalı, harf ve rakamlardan oluşmalı ve boşluk, özel karakter veya emoji içermemelidir.
<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>

Satır içi metin, herhangi bir tipik satır içi HTML öğesini (bir <small>, <span>veya başka bir şey olsun) bir yardımcı program sınıfından başka bir şey olmadan kullanabilir.

8-20 karakter uzunluğunda olmalıdır.
<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>

Engelli formları

EkledisabledKullanıcı etkileşimlerini önlemek ve daha açık görünmesini sağlamak için bir girdiye boolean niteliğini

<input class="form-control" id="disabledInput" type="text" placeholder="Disabled input here..." disabled>

İçindeki tüm kontrolleri devre dışı bırakmak için disabledözniteliği a öğesine ekleyin .<fieldset>

Devre dışı bırakılmış alan kümesi örneği
<form>
  <fieldset disabled>
    <legend>Disabled fieldset example</legend>
    <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-group">
      <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>
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
  </fieldset>
</form>
Çapalı uyarı

Tarayıcılar, tüm yerel form denetimlerini ( <input>, <select>ve <button>öğelerini) bir<fieldset disabled> devre dışı olarak kabul ederek üzerlerinde hem klavye hem de fare etkileşimlerini engeller.

Ancak, formunuz gibi özel düğme benzeri öğeler de içeriyorsa <a ... class="btn btn-*">, bunlara yalnızca pointer-events: none. Düğmelerin devre dışı bırakılma durumuyla ilgili bölümde (ve özellikle bağlantı öğelerinin alt bölümünde) belirtildiği gibi, bu CSS özelliği henüz standartlaştırılmamıştır ve Internet Explorer 10'da tam olarak desteklenmemektedir. Bağlantı tabanlı denetimler de yine de klavyeyi kullanarak odaklanabilir ve çalıştırılabilir. tabindex="-1"Odaklanmalarını önlemek ve aria-disabled="disabled"durumlarını yardımcı teknolojilere bildirmek için ekleyerek bu kontrolleri manuel olarak değiştirmelisiniz .

Tarayıcılar arası uyumluluk

Bootstrap bu stilleri tüm tarayıcılarda uygularken, Internet Explorer 11 ve altı disabled, bir <fieldset>. Bu tarayıcılarda alan kümesini devre dışı bırakmak için özel JavaScript kullanın.

doğrulama

Desteklenen tüm tarayıcılarımızda bulunan HTML5 form doğrulaması ile kullanıcılarınıza değerli, eyleme geçirilebilir geri bildirim sağlayın . Tarayıcı varsayılan doğrulama geri bildirimi arasından seçim yapın veya yerleşik sınıflarımız ve başlangıç ​​JavaScript'i ile özel mesajlar uygulayın.

Yardımcı teknolojilere maruz kalmadıkları için şu anda istemci tarafı özel doğrulama stillerine ve araç ipuçlarına erişilemediğinin farkındayız. Bir çözüm üzerinde çalışırken, sunucu tarafı seçeneğini veya varsayılan tarayıcı doğrulama yöntemini kullanmanızı öneririz.

Nasıl çalışır

Bootstrap ile form doğrulama şu şekilde çalışır:

  • HTML form doğrulaması, CSS'nin iki sözde sınıfı :invalidve :valid. <input>, <select>ve <textarea>öğeleri için geçerlidir .
  • Bootstrap, :invalidve :validstillerini .was-validated, genellikle<form> . Aksi takdirde, değeri olmayan herhangi bir zorunlu alan, sayfa yüklemesinde geçersiz olarak görünür. Bu şekilde, onları ne zaman etkinleştireceğinizi seçebilirsiniz (genellikle form gönderme denendikten sonra).
  • Formun görünümünü sıfırlamak için (örneğin, AJAX kullanılarak dinamik form gönderimleri durumunda), .was-validatedsınıfı<form> tekrar kaldırın.
  • Bir geri dönüş olarak, sunucu tarafı doğrulaması.is-invalid için sözde sınıflar yerine ve .is-validsınıfları kullanılabilir . bir gerektirmezler.was-validatedBir ebeveyn sınıfı
  • <label>CSS'nin nasıl çalıştığına ilişkin kısıtlamalar nedeniyle , özel JavaScript'in yardımı olmadan DOM'da bir form kontrolünden önce gelen bir stile (şu anda) stiller uygulayamıyoruz .
  • Tüm modern tarayıcılar , form kontrollerini doğrulamak için bir dizi JavaScript yöntemi olan kısıtlama doğrulama API'sini destekler.
  • Geri bildirim mesajları, tarayıcı varsayılanlarını kullanabilir (her tarayıcı için farklı ve CSS aracılığıyla biçimlendirilemez) veya ek HTML ve CSS ile özel geri bildirim stillerimizi kullanabilir.
  • setCustomValidityJavaScript ile özel geçerlilik mesajları sağlayabilirsiniz .

Bunu akılda tutarak, özel form doğrulama stillerimiz, isteğe bağlı sunucu tarafı sınıflarımız ve tarayıcı varsayılanlarımız için aşağıdaki demoları göz önünde bulundurun.

Özel stiller

Özel Bootstrap form doğrulama mesajları için, novalidateboolean niteliğini <form>. Bu, tarayıcının varsayılan geri bildirim araç ipuçlarını devre dışı bırakır, ancak yine de JavaScript'teki form doğrulama API'lerine erişim sağlar. Aşağıdaki formu göndermeyi deneyin; JavaScript'imiz gönder düğmesini durduracak ve size geri bildirim iletecektir. Göndermeye çalışırken , form kontrollerinize uygulanan :invalidve stilleri göreceksiniz .:valid

Özel geri bildirim stilleri, geri bildirimi daha iyi iletmek için özel renkler, kenarlıklar, odak stilleri ve arka plan simgeleri uygular. s için arka plan simgeleri <select>yalnızca ile kullanılabilir .custom-select, ile kullanılamaz .form-control.

İyi görünüyor!
İyi görünüyor!
Lütfen geçerli bir şehir belirtin.
Lütfen geçerli bir eyalet seçin.
Lütfen geçerli bir zip sağlayın.
Göndermeden önce kabul etmelisiniz.
<form class="needs-validation" novalidate>
  <div class="form-row">
    <div class="col-md-6 mb-3">
      <label for="validationCustom01">First name</label>
      <input type="text" class="form-control" id="validationCustom01" value="Mark" required>
      <div class="valid-feedback">
        Looks good!
      </div>
    </div>
    <div class="col-md-6 mb-3">
      <label for="validationCustom02">Last name</label>
      <input type="text" class="form-control" id="validationCustom02" value="Otto" required>
      <div class="valid-feedback">
        Looks good!
      </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" required>
      <div class="invalid-feedback">
        Please provide a valid city.
      </div>
    </div>
    <div class="col-md-3 mb-3">
      <label for="validationCustom04">State</label>
      <select class="custom-select" id="validationCustom04" required>
        <option selected disabled value="">Choose...</option>
        <option>...</option>
      </select>
      <div class="invalid-feedback">
        Please select a valid state.
      </div>
    </div>
    <div class="col-md-3 mb-3">
      <label for="validationCustom05">Zip</label>
      <input type="text" class="form-control" id="validationCustom05" 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>

Tarayıcı varsayılanları

Özel doğrulama geri bildirim mesajlarıyla veya form davranışlarını değiştirmek için JavaScript yazmakla ilgilenmiyor musunuz? Her şey yolunda, tarayıcı varsayılanlarını kullanabilirsiniz. Aşağıdaki formu göndermeyi deneyin. Tarayıcınıza ve işletim sisteminize bağlı olarak, biraz farklı bir geri bildirim tarzı görürsünüz.

Bu geri bildirim stilleri CSS ile biçimlendirilemezken, geri bildirim metnini JavaScript aracılığıyla yine de özelleştirebilirsiniz.

<form>
  <div class="form-row">
    <div class="col-md-6 mb-3">
      <label for="validationDefault01">First name</label>
      <input type="text" class="form-control" id="validationDefault01" value="Mark" required>
    </div>
    <div class="col-md-6 mb-3">
      <label for="validationDefault02">Last name</label>
      <input type="text" class="form-control" id="validationDefault02" value="Otto" required>
    </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" required>
    </div>
    <div class="col-md-3 mb-3">
      <label for="validationDefault04">State</label>
      <select class="custom-select" id="validationDefault04" required>
        <option selected disabled value="">Choose...</option>
        <option>...</option>
      </select>
    </div>
    <div class="col-md-3 mb-3">
      <label for="validationDefault05">Zip</label>
      <input type="text" class="form-control" id="validationDefault05" 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>

sunucu tarafı

İstemci tarafı doğrulama kullanmanızı öneririz, ancak sunucu tarafı doğrulamaya ihtiyaç duymanız durumunda geçersiz ve geçerli form alanlarını ve ile .is-invalidbelirtebilirsiniz .is-valid. .invalid-feedbackBu sınıflarla da desteklendiğini unutmayın .

Geçersiz alanlar için, geçersiz geri bildirim/hata mesajının kullanarak ilgili form alanıyla ilişkilendirildiğinden emin olun aria-describedby. idBu öznitelik , alanın zaten ek form metnine işaret etmesi durumunda birden fazla başvuru yapılmasına izin verir .

İyi görünüyor!
İyi görünüyor!
Lütfen geçerli bir şehir belirtin.
Lütfen geçerli bir eyalet seçin.
Lütfen geçerli bir zip sağlayın.
Göndermeden önce kabul etmelisiniz.
<form>
  <div class="form-row">
    <div class="col-md-6 mb-3">
      <label for="validationServer01">First name</label>
      <input type="text" class="form-control is-valid" id="validationServer01" value="Mark" required>
      <div class="valid-feedback">
        Looks good!
      </div>
    </div>
    <div class="col-md-6 mb-3">
      <label for="validationServer02">Last name</label>
      <input type="text" class="form-control is-valid" id="validationServer02" value="Otto" required>
      <div class="valid-feedback">
        Looks good!
      </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" aria-describedby="validationServer03Feedback" required>
      <div id="validationServer03Feedback" class="invalid-feedback">
        Please provide a valid city.
      </div>
    </div>
    <div class="col-md-3 mb-3">
      <label for="validationServer04">State</label>
      <select class="custom-select is-invalid" id="validationServer04" aria-describedby="validationServer04Feedback" required>
        <option selected disabled value="">Choose...</option>
        <option>...</option>
      </select>
      <div id="validationServer04Feedback" class="invalid-feedback">
        Please select 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" aria-describedby="validationServer05Feedback" required>
      <div id="validationServer05Feedback" 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" aria-describedby="invalidCheck3Feedback" required>
      <label class="form-check-label" for="invalidCheck3">
        Agree to terms and conditions
      </label>
      <div  id="invalidCheck3Feedback" class="invalid-feedback">
        You must agree before submitting.
      </div>
    </div>
  </div>
  <button class="btn btn-primary" type="submit">Submit form</button>
</form>

Desteklenen öğeler

Aşağıdaki form kontrolleri ve bileşenleri için doğrulama stilleri mevcuttur:

  • <input>s ve <textarea>s ile.form-control
  • <select>s ile .form-controlveya.custom-select
  • .form-checks
  • .custom-checkboxs ve .custom-radios
  • .custom-file
Lütfen metin alanına bir mesaj girin.
Örnek geçersiz geri bildirim metni
Daha fazla örnek geçersiz geri bildirim metni
Örnek geçersiz özel seçim geri bildirimi
Örnek geçersiz özel dosya geri bildirimi
@
Örnek geçersiz giriş grubu geri bildirimi
Örnek geçersiz giriş grubu geri bildirimi
Örnek geçersiz giriş grubu geri bildirimi
<form class="was-validated">
  <div class="mb-3">
    <label for="validationTextarea">Textarea</label>
    <textarea class="form-control is-invalid" id="validationTextarea" placeholder="Required example textarea" required></textarea>
    <div class="invalid-feedback">
      Please enter a message in the textarea.
    </div>
  </div>

  <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="mb-3">
    <select class="custom-select" required>
      <option value="">Choose...</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 mb-3">
    <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>

  <div class="mb-3">
    <div class="input-group is-invalid">
      <div class="input-group-prepend">
        <span class="input-group-text" id="validatedInputGroupPrepend">@</span>
      </div>
      <input type="text" class="form-control is-invalid" aria-describedby="validatedInputGroupPrepend" required>
    </div>
    <div class="invalid-feedback">
      Example invalid input group feedback
    </div>
  </div>

  <div class="mb-3">
    <div class="input-group is-invalid">
      <div class="input-group-prepend">
        <label class="input-group-text" for="validatedInputGroupSelect">Options</label>
      </div>
      <select class="custom-select" id="validatedInputGroupSelect" required>
        <option value="">Choose...</option>
        <option value="1">One</option>
        <option value="2">Two</option>
        <option value="3">Three</option>
      </select>
    </div>
    <div class="invalid-feedback">
      Example invalid input group feedback
    </div>
  </div>

  <div class="input-group is-invalid">
    <div class="custom-file">
      <input type="file" class="custom-file-input" id="validatedInputGroupCustomFile" required>
      <label class="custom-file-label" for="validatedInputGroupCustomFile">Choose file...</label>
    </div>
    <div class="input-group-append">
       <button class="btn btn-outline-secondary" type="button">Button</button>
    </div>
  </div>
  <div class="invalid-feedback">
    Example invalid input group feedback
  </div>
</form>

Araç ipuçları

Form düzeniniz izin veriyorsa, stilize edilmiş bir araç ipucunda doğrulama geri bildirimini görüntülemek .{valid|invalid}-feedbackiçin sınıfları sınıflarla değiştirebilirsiniz. Araç ipucu konumlandırması için üzerinde .{valid|invalid}-tooltipbir ebeveyn bulunduğundan emin olun . position: relativeAşağıdaki örnekte, sütun sınıflarımız buna zaten sahiptir, ancak projeniz alternatif bir kurulum gerektirebilir.

İyi görünüyor!
İyi görünüyor!
Lütfen geçerli bir şehir belirtin.
Lütfen geçerli bir eyalet seçin.
Lütfen geçerli bir zip sağlayın.
<form class="needs-validation" novalidate>
  <div class="form-row">
    <div class="col-md-6 mb-3">
      <label for="validationTooltip01">First name</label>
      <input type="text" class="form-control" id="validationTooltip01" value="Mark" required>
      <div class="valid-tooltip">
        Looks good!
      </div>
    </div>
    <div class="col-md-6 mb-3">
      <label for="validationTooltip02">Last name</label>
      <input type="text" class="form-control" id="validationTooltip02" value="Otto" required>
      <div class="valid-tooltip">
        Looks good!
      </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" required>
      <div class="invalid-tooltip">
        Please provide a valid city.
      </div>
    </div>
    <div class="col-md-3 mb-3">
      <label for="validationTooltip04">State</label>
      <select class="custom-select" id="validationTooltip04" required>
        <option selected disabled value="">Choose...</option>
        <option>...</option>
      </select>
      <div class="invalid-tooltip">
        Please select 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" required>
      <div class="invalid-tooltip">
        Please provide a valid zip.
      </div>
    </div>
  </div>
  <button class="btn btn-primary" type="submit">Submit form</button>
</form>

özelleştirme

Doğrulama durumları $form-validation-statesharita ile Sass üzerinden özelleştirilebilir. Dosyamızda bulunan _variables.scssbu Sass haritası, varsayılan valid/ invaliddoğrulama durumlarını oluşturmak için döngüye alınmıştır. Her durumun rengini ve simgesini özelleştirmek için iç içe geçmiş bir harita dahildir. Tarayıcılar tarafından başka hiçbir durum desteklenmezken, özel stiller kullananlar daha karmaşık form geri bildirimlerini kolayca ekleyebilir.

Lütfen, karışımı değiştirmeden bu değerleri özelleştirmenizi form-validation-stateönermediğimizi unutmayın.

// Sass map from `_variables.scss`
// Override this and recompile your Sass to generate different states
$form-validation-states: map-merge(
  (
    "valid": (
      "color": $form-feedback-valid-color,
      "icon": $form-feedback-icon-valid
    ),
    "invalid": (
      "color": $form-feedback-invalid-color,
      "icon": $form-feedback-icon-invalid
    )
  ),
  $form-validation-states
);

// Loop from `_forms.scss`
// Any modifications to the above Sass map will be reflected in your compiled
// CSS via this loop.
@each $state, $data in $form-validation-states {
  @include form-validation-state($state, map-get($data, color), map-get($data, icon));
}

Giriş grubu doğrulaması

Doğrulamalı bir giriş grubu içinde hangi öğelerin yuvarlatılmış köşelere ihtiyacı olduğunu saptamak için, bir giriş grubu ek bir .has-validationsınıf gerektirir.

<div class="input-group has-validation">
  <div class="input-group-prepend">
    <span class="input-group-text">@</span>
  </div>
  <input type="text" class="form-control" required>
  <div class="invalid-feedback">
    Please choose a username.
  </div>
</div>
@
Lütfen bir kullanıcı adı seçin.

Özel formlar

Daha da fazla özelleştirme ve tarayıcılar arası tutarlılık için tarayıcı varsayılanlarını değiştirmek üzere tamamen özel form öğelerimizi kullanın. Anlamsal ve erişilebilir işaretleme üzerine inşa edilmişlerdir, bu nedenle herhangi bir varsayılan form denetimi için sağlam ikamelerdir.

Onay kutuları ve radyolar

Her bir onay kutusu, radyo <input>ve eşleştirme, özel kontrolümüzü oluşturmak için <label>a'ya sarılır . <div>Yapısal olarak bu, varsayılanımızla aynı yaklaşımdır .form-check.

Özel form göstergemizi uygun şekilde biçimlendirmek ~için tüm <input>durumlarımız için kardeş seçiciyi ( ) kullanıyoruz. :checkedSınıfla birleştirildiğinde, .custom-control-labelher bir öğenin metnini <input>' durumuna göre biçimlendirebiliriz.

<input>Varsayılanı ile gizleriz ve yerine ve ile yeni bir özel form göstergesi oluşturmak için opacitykullanırız . Ne yazık ki, yalnızca CSS'lerden özel bir tane oluşturamıyoruz ..custom-control-label::before::after<input>content bu öğe üzerinde çalışmadığı için özel bir tane oluşturamıyoruz.

İşaretli durumlarda, Open Iconic'ten base64 gömülü SVG simgelerini kullanırız . Bu bize, tarayıcılar ve cihazlar arasında şekillendirme ve konumlandırma için en iyi kontrolü sağlar.

onay kutuları

<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>

:indeterminateÖzel onay kutuları, JavaScript aracılığıyla manuel olarak ayarlandığında sözde sınıfı da kullanabilir (bunu belirtmek için kullanılabilir HTML özniteliği yoktur).

jQuery kullanıyorsanız, bunun gibi bir şey yeterli olacaktır:

$('.your-checkbox').prop('indeterminate', true)

radyolar

<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>

Çizgide

<div class="custom-control custom-radio custom-control-inline">
  <input type="radio" id="customRadioInline1" name="customRadioInline" 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="customRadioInline" class="custom-control-input">
  <label class="custom-control-label" for="customRadioInline2">Or toggle this other custom radio</label>
</div>

Engelli

Özel onay kutuları ve radyolar da devre dışı bırakılabilir. disabledBoolean niteliğini buna ekleyin <input>ve özel gösterge ve etiket açıklaması otomatik olarak şekillendirilecektir.

<div class="custom-control custom-checkbox">
  <input type="checkbox" class="custom-control-input" id="customCheckDisabled1" disabled>
  <label class="custom-control-label" for="customCheckDisabled1">Check this custom checkbox</label>
</div>

<div class="custom-control custom-radio">
  <input type="radio" name="radioDisabled" id="customRadioDisabled2" class="custom-control-input" disabled>
  <label class="custom-control-label" for="customRadioDisabled2">Toggle this custom radio</label>
</div>

Anahtarlar

Bir anahtar, özel bir onay kutusunun işaretlemesine sahiptir, ancak .custom-switchbir geçiş anahtarı oluşturmak için sınıfı kullanır. Anahtarlar da disabledözelliği destekler.

<div class="custom-control custom-switch">
  <input type="checkbox" class="custom-control-input" id="customSwitch1">
  <label class="custom-control-label" for="customSwitch1">Toggle this switch element</label>
</div>
<div class="custom-control custom-switch">
  <input type="checkbox" class="custom-control-input" disabled id="customSwitch2">
  <label class="custom-control-label" for="customSwitch2">Disabled switch element</label>
</div>

Seçim Menüsü

Özel menüler , özel stilleri tetiklemek için <select>yalnızca özel bir sınıfa ihtiyaç duyar . Özel stiller, 'nin ilk görünümüyle .custom-selectsınırlıdır ve tarayıcı sınırlamaları nedeniyle 'leri değiştiremez.<select><option>

<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>

Benzer boyuttaki metin girişlerimize uyması için küçük ve büyük özel seçimler arasından da seçim yapabilirsiniz.

<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>

multipleÖznitelik de desteklenir :

<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>

Nitelik olarak size:

<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>

Menzil

ile özel <input type="range">kontroller oluşturun .custom-range. İz (arka plan) ve başparmak (değer) tarayıcılarda aynı görünecek şekilde tasarlanmıştır. İlerlemeyi görsel olarak belirtmek için yalnızca IE ve Firefox izlerini başparmağın solundan veya sağından “doldurmayı” desteklediğinden, şu anda desteklemiyoruz.

<label for="customRange1">Example range</label>
<input type="range" class="custom-range" id="customRange1">

minAralık girdileri, sırasıyla ve max- 0ve için örtük değerlere 100sahiptir. minve niteliklerini kullananlar için yeni değerler belirleyebilirsiniz max.

<label for="customRange2">Example range</label>
<input type="range" class="custom-range" min="0" max="5" id="customRange2">

Varsayılan olarak, aralık girişleri tamsayı değerlerine "snap" yapar. Bunu değiştirmek için bir stepdeğer belirtebilirsiniz. Aşağıdaki örnekte, kullanarak adım sayısını ikiye katlıyoruz step="0.5".

<label for="customRange3">Example range</label>
<input type="range" class="custom-range" min="0" max="5" step="0.5" id="customRange3">

Dosya tarayıcısı

Özel dosya girişini canlandırmak için önerilen eklenti: bs-custom-file-input , şu anda burada, dokümanlarımızda bunu kullanıyoruz.

Dosya girişi, grubun en çetrefilli olanıdır ve bunları işlevsel Dosya seç… ve seçilen dosya adı metni ile bağlamak istiyorsanız ek JavaScript gerektirir .

<div class="custom-file">
  <input type="file" class="custom-file-input" id="customFile">
  <label class="custom-file-label" for="customFile">Choose file</label>
</div>

<input>Varsayılan dosyayı üzerinden gizleriz opacityve bunun yerine <label>. Düğme oluşturulur ve ile konumlandırılır ::after. Son olarak, çevreleyen içerik için uygun boşluk için a widthve heightüzerinde beyan ederiz .<input>

SCSS ile dizeleri çevirme veya özelleştirme

Sözde :lang()sınıf , “Gözat” metninin diğer dillere çevrilmesine izin vermek için kullanılır. İlgili dil etiketi ve yerelleştirilmiş dizelerle $custom-file-textSass değişkenine girişleri geçersiz kılın veya ekleyin . İngilizce dizeleri aynı şekilde özelleştirilebilir. Örneğin, İspanyolca bir çevirinin nasıl eklenebileceği aşağıda açıklanmıştır (İspanyolca'nın dil kodu ):es

$custom-file-text: (
  en: "Browse",
  es: "Elegir"
);

lang(es)İspanyolca çeviri için özel dosya girişiyle ilgili eylem :

<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>

Doğru metnin gösterilebilmesi için belgenizin (veya alt ağacının) dilini doğru şekilde ayarlamanız gerekir. Bu, diğer yöntemlerin yanı sıra, öğedeki langöznitelik<html> veya Content-LanguageHTTP başlığı kullanılarak yapılabilir.

Dizeleri HTML ile çevirme veya özelleştirme

data-browseBootstrap ayrıca , özel giriş etiketine eklenebilen öznitelikle HTML'deki "Gözat" metnini çevirmenin bir yolunu sunar (örnek Felemenkçe):

<div class="custom-file">
  <input type="file" class="custom-file-input" id="customFileLangHTML">
  <label class="custom-file-label" for="customFileLangHTML" data-browse="Bestand kiezen">Voeg je document toe</label>
</div>