Source

Formuláre

Príklady a pokyny na použitie pre štýly ovládania formulárov, možnosti rozloženia a vlastné komponenty na vytváranie širokej škály formulárov.

Prehľad

Ovládacie prvky formulára Bootstrap rozširujú naše štýly formulárov Rebooted o triedy. Pomocou týchto tried si môžete aktivovať prispôsobené zobrazenia pre konzistentnejšie vykresľovanie vo všetkých prehliadačoch a zariadeniach.

Uistite sa, že používate vhodný typeatribút na všetkých vstupoch (napr. emailpre e-mailovú adresu alebo numberpre číselné informácie), aby ste využili výhody novších ovládacích prvkov vstupu, ako je overenie e-mailu, výber čísla a ďalšie.

Tu je rýchly príklad na demonštráciu štýlov formulárov Bootstrapu. Pokračujte v čítaní dokumentácie o požadovaných triedach, rozložení formulárov a ďalších.

Nikdy nebudeme zdieľať váš e-mail s nikým iným.
<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>

Ovládacie prvky formulára

Ovládacie prvky textového formulára – napríklad <input>s, <select>s a <textarea>s – sú v štýle .form-controltriedy. Zahrnuté sú štýly pre celkový vzhľad, stav zaostrenia, veľkosť a ďalšie.

Nezabudnite preskúmať naše vlastné formuláre na ďalšie štýly <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>

Pre vstupy súborov vymeňte .form-controlza .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>

Dimenzovanie

Nastavte výšky pomocou tried ako .form-control-lga .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>

Iba na čítanie

Pridajte readonlybooleovský atribút na vstup, aby ste zabránili úprave hodnoty vstupu. Vstupy len na čítanie sa zdajú svetlejšie (rovnako ako zakázané vstupy), ale zachovajú si štandardný kurzor.

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

Čistý text len ​​na čítanie

Ak chcete mať <input readonly>prvky vo formulári v štýle obyčajného textu, použite .form-control-plaintexttriedu na odstránenie predvoleného štýlu poľa formulára a zachovajte správny okraj a výplň.

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

Zaškrtávacie políčka a rádiá

Predvolené začiarkavacie políčka a rádiá sú vylepšené pomocou .form-checkjedinej triedy pre oba typy vstupu, ktorá zlepšuje rozloženie a správanie ich prvkov HTML . Začiarkavacie políčka slúžia na výber jednej alebo viacerých možností v zozname, zatiaľ čo rádiá sú na výber jednej možnosti z mnohých.

Zakázané začiarkavacie políčka a rádiá sú podporované, ale ak chcete not-allowedumiestniť kurzor na nadradenú položku <label>, budete musieť pridať disabledatribút do .form-check-input. Atribút disabled použije svetlejšiu farbu, ktorá pomôže indikovať stav vstupu.

Používané začiarkavacie políčka a rádiá sú vytvorené tak, aby podporovali validáciu formulárov na báze HTML a poskytovali stručné a prístupné označenia. Ako také sú naše <input>s a <label>s súrodenecké prvky na rozdiel od prvkov v <input>rámci <label>. Toto je o niečo podrobnejšie, pretože musíte špecifikovať ida foratribúty, aby ste spojili <input>a <label>.

Predvolené (zoskupené)

V predvolenom nastavení bude ľubovoľný počet začiarkavacích políčok a rádií, ktoré sú bezprostrednými súrodencami, vertikálne usporiadaný a primerane rozmiestnený s .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>

V rade

Zoskupte začiarkavacie políčka alebo rádiá v rovnakom vodorovnom riadku pridaním .form-check-inlinek ľubovoľnému .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>

Bez štítkov

Pridať .position-statick vstupom .form-check, ktoré neobsahujú žiadny text menovky. Nezabudnite ešte poskytnúť nejakú formu označenia pre asistenčné technológie (napríklad pomocou 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>

Rozloženie

Keďže Bootstrap platí display: blocktakmer width: 100%pre všetky naše ovládacie prvky formulárov, formuláre sa štandardne ukladajú vertikálne. Na zmenu tohto rozloženia na základe jednotlivých formulárov možno použiť ďalšie triedy.

Vytvárajte skupiny

Trieda .form-groupje najjednoduchší spôsob, ako pridať určitú štruktúru do formulárov. Poskytuje flexibilnú triedu, ktorá podporuje správne zoskupenie štítkov, ovládacích prvkov, voliteľného pomocného textu a správ na overenie formulárov. V predvolenom nastavení platí iba margin-bottom, ale podľa .form-inlinepotreby preberá ďalšie štýly. Použite ho s <fieldset>s, <div>s alebo takmer s akýmkoľvek iným prvkom.

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

Mriežka formulára

Zložitejšie formuláre je možné zostaviť pomocou našich tried mriežky. Použite ich pre rozloženia formulárov, ktoré vyžadujú viacero stĺpcov, rôzne šírky a ďalšie možnosti zarovnania.

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

Riadok formulára

Môžete tiež zameniť .rowza .form-row, variáciu nášho štandardného riadku mriežky, ktorý prepíše predvolené odkvapy stĺpcov, čím získate užšie a kompaktnejšie rozloženia.

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

Pomocou mriežkového systému je možné vytvárať aj zložitejšie rozloženia.

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

Horizontálny tvar

Vytvorte vodorovné formuláre s mriežkou pridaním .rowtriedy do skupín formulárov a použitím .col-*-*tried na určenie šírky štítkov a ovládacích prvkov. Nezabudnite pridať .col-form-labelaj do svojich <label>s, aby boli vertikálne vycentrované s príslušnými ovládacími prvkami formulára.

Niekedy možno budete musieť použiť pomocné nástroje pre okraje alebo výplň, aby ste vytvorili dokonalé zarovnanie, ktoré potrebujete. Odstránili sme napríklad padding-topštítok naskladaných rádiových vstupov, aby sme lepšie zarovnali základňu textu.

Rádia
začiarkavacie políčko
<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>
Horizontálne formátovanie štítkov

Uistite sa, že používate .col-form-label-smalebo .col-form-label-lgna vaše <label>s alebo <legend>s, aby ste správne dodržiavali veľkosť .form-control-lga .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>

Dimenzovanie stĺpcov

Ako je uvedené v predchádzajúcich príkladoch, náš mriežkový systém vám umožňuje umiestniť ľubovoľný počet .cols v rámci a .rowalebo .form-row. Rovnomerne rozdelia dostupnú šírku medzi seba. Môžete si tiež vybrať podmnožinu svojich stĺpcov, aby zaberali viac alebo menej miesta, zatiaľ čo zvyšné .cols rovnomerne rozdelia zvyšok so špecifickými triedami stĺpcov, ako je .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>

Automatické nastavenie veľkosti

V nižšie uvedenom príklade sa používa nástroj flexbox na vertikálne vycentrovanie obsahu a zmeny .coltak .col-auto, aby vaše stĺpce zaberali len toľko miesta, koľko je potrebné. Inak povedané, veľkosť stĺpca závisí od obsahu.

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

Potom to môžete znova zmiešať s triedami stĺpcov špecifických pre veľkosť.

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

A samozrejme sú podporované vlastné ovládacie prvky formulárov .

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

Inline formuláre

Použite .form-inlinetriedu na zobrazenie série štítkov, ovládacích prvkov formulárov a tlačidiel v jednom vodorovnom riadku. Ovládacie prvky formulárov v rámci vložených formulárov sa mierne líšia od ich predvolených stavov.

  • Ovládacie prvky sú display: flex, ktoré zbaľujú akýkoľvek prázdny priestor HTML a umožňujú vám poskytovať kontrolu zarovnania pomocou nástrojov pre medzery a flexbox .
  • Ovládacie prvky a vstupné skupiny dostanú width: autona prepísanie predvoleného nastavenia Bootstrap width: 100%.
  • Ovládacie prvky sa zobrazujú vložené iba vo výrezoch, ktoré sú široké aspoň 576 pixelov , aby sa zohľadnili úzke výrezy na mobilných zariadeniach.

Možno budete musieť manuálne upraviť šírku a zarovnanie jednotlivých ovládacích prvkov formulára pomocou nástrojov na nastavenie medzier (ako je uvedené nižšie). Nakoniec nezabudnite vždy zahrnúť ku <label>každému ovládaciemu prvku formulára, aj keď ho potrebujete skryť pred návštevníkmi, ktorí nepoužívajú čítačku obrazovky, pomocou .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>

Podporované sú aj ovládacie prvky a výbery vlastných formulárov.

<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>
Alternatívy k skrytým štítkom

Pomocné technológie, ako sú čítačky obrazovky, budú mať problémy s formulármi, ak nezahrniete štítok pre každý vstup. Pre tieto vložené formuláre môžete štítky skryť pomocou .sr-onlytriedy. Existujú ďalšie alternatívne spôsoby poskytovania označenia pre asistenčné technológie, ako napríklad atribút aria-label, aria-labelledbyalebo . titleAk nie je prítomný žiadny z nich, asistenčné technológie sa môžu uchýliť k použitiu placeholderatribútu, ak je prítomný, ale všimnite si, že použitie placeholderako náhrady za iné metódy označovania sa neodporúča.

Pomocný text

Text pomoci na úrovni bloku vo formulároch je možné vytvoriť pomocou .form-text(predtým známeho ako .help-blockv3). Inline pomocný text môže byť flexibilne implementovaný pomocou akéhokoľvek vloženého HTML elementu a pomocných tried ako .text-muted.

Priradenie pomocného textu k ovládacím prvkom formulára

Text pomocníka by mal byť explicitne spojený s ovládacím prvkom formulára, na ktorý sa vzťahuje pomocou aria-describedbyatribútu. Tým sa zabezpečí, že asistenčné technológie – ako napríklad čítačky obrazovky – oznámia tento text pomocníka, keď používateľ zaostrí alebo vstúpi do ovládacieho prvku.

Text pomocníka pod vstupmi je možné upraviť pomocou .form-text. Táto trieda obsahuje display: blocka pridáva určitý horný okraj pre ľahké rozstupy od vyššie uvedených vstupov.

Vaše heslo musí mať 8 až 20 znakov, musí obsahovať písmená a čísla a nesmie obsahovať medzery, špeciálne znaky ani emotikony.
<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>

Vložený text môže používať akýkoľvek typický vložený prvok HTML (či už je to <small>, <span>, alebo niečo iné) s ničím iným ako pomocnou triedou.

Musí mať 8 až 20 znakov.
<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>

Zakázané formuláre

Pridajte disabledbooleovský atribút na vstup, aby ste zabránili interakciám používateľa a aby sa javil ako ľahší.

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

Ak chcete vypnúť všetky ovládacie prvky, pridajte disabledatribút do.<fieldset>

<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>
Upozornenie s kotvami

V predvolenom nastavení budú prehliadače považovať všetky ovládacie prvky natívneho formulára ( <input>a <select>prvky <button>) <fieldset disabled>za deaktivované, čím zabránia interakciám s klávesnicou a myšou. Ak však váš formulár obsahuje aj <a ... class="btn btn-*">prvky, tieto budú mať iba štýl pointer-events: none. Ako je uvedené v sekcii o zakázanom stave pre tlačidlá (a konkrétne v podsekcii pre prvky kotvy), táto vlastnosť CSS ešte nie je štandardizovaná a nie je plne podporovaná v Opere 18 a novších verziách ani v Internet Exploreri 10 a vyhrala nezabráni používateľom klávesnice v tom, aby mohli zamerať alebo aktivovať tieto odkazy. Aby ste boli v bezpečí, použite na zakázanie takýchto odkazov vlastný JavaScript.

Kompatibilita medzi prehliadačmi

disabledZatiaľ čo Bootstrap použije tieto štýly vo všetkých prehliadačoch, Internet Explorer 11 a nižšie tento atribút plne nepodporujú <fieldset>. Na zakázanie sady polí v týchto prehliadačoch použite vlastný JavaScript.

Validácia

Poskytnite svojim používateľom hodnotnú spätnú väzbu, ktorú možno vykonať, pomocou overenia formulára HTML5 – dostupného vo všetkých našich podporovaných prehliadačoch . Vyberte si z predvolenej spätnej väzby na overenie prehliadača alebo implementujte vlastné správy pomocou našich vstavaných tried a spúšťacieho JavaScriptu.

Dôrazne odporúčame vlastné štýly overenia, pretože predvolené nastavenia natívneho prehliadača nie sú oznamované čítačkám obrazovky.

Ako to funguje

Tu je návod, ako funguje overenie formulárov s Bootstrap:

  • Overenie formulára HTML sa používa prostredníctvom dvoch pseudotried CSS :invalida :valid. Vzťahuje sa na prvky <input>, <select>, a <textarea>.
  • Bootstrap rozsahy štýlov :invalida :validna nadradenú .was-validatedtriedu, zvyčajne aplikované na <form>. V opačnom prípade sa akékoľvek povinné pole bez hodnoty pri načítaní stránky zobrazí ako neplatné. Týmto spôsobom si môžete vybrať, kedy ich chcete aktivovať (zvyčajne po pokuse o odoslanie formulára).
  • Namiesto pseudotried na overenie na strane servera sa môžu použiť triedy .is-invalida . Nevyžadujú rodičovskú triedu..is-valid.was-validated
  • Kvôli obmedzeniam v spôsobe fungovania CSS nemôžeme (v súčasnosti) použiť štýly na <label>prvok, ktorý sa nachádza pred ovládacím prvkom formulára v DOM bez pomoci vlastného JavaScriptu.
  • Všetky moderné prehliadače podporujú rozhranie API na overenie obmedzení , sériu metód JavaScriptu na overenie ovládacích prvkov formulárov.
  • Správy spätnej väzby môžu využívať predvolené nastavenia prehliadača (rôzne pre každý prehliadač a nestylovateľné cez CSS) alebo naše vlastné štýly spätnej väzby s dodatočným HTML a CSS.
  • Môžete poskytnúť vlastné správy o platnosti setCustomValidityv jazyku JavaScript.

Vzhľadom na to zvážte nasledujúce ukážky našich vlastných štýlov overovania formulárov, voliteľných tried na strane servera a predvolených nastavení prehliadača.

Vlastné štýly

Pre vlastné správy na overenie formulára Bootstrap budete musieť pridať novalidatebooleovský atribút do súboru <form>. Toto zakáže predvolené popisy spätnej väzby prehliadača, ale stále poskytuje prístup k rozhraniam API na overenie formulárov v jazyku JavaScript. Skúste odoslať formulár nižšie; náš JavaScript zachytí tlačidlo Odoslať a odošle vám spätnú väzbu.

Pri pokuse o odoslanie uvidíte štýly :invalida použité na ovládacie prvky formulára.:valid

Looks good!
Looks good!
@
Please choose a username.
Please provide a valid city.
Please provide a valid state.
Please provide a valid zip.
You must agree before submitting.
<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>

Predvolené nastavenia prehliadača

Nemáte záujem o vlastné správy so spätnou väzbou na overenie alebo písanie JavaScriptu na zmenu správania formulárov? Všetko v poriadku, môžete použiť predvolené nastavenia prehliadača. Skúste odoslať formulár nižšie. V závislosti od vášho prehliadača a operačného systému uvidíte trochu iný štýl spätnej väzby.

Aj keď tieto štýly spätnej väzby nemožno upravovať pomocou CSS, text spätnej väzby môžete prispôsobiť pomocou JavaScriptu.

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

Strana servera

Odporúčame použiť overenie na strane klienta, ale v prípade, že požadujete stranu servera, môžete označiť neplatné a platné polia formulára pomocou .is-invalida .is-valid. Všimnite si, že .invalid-feedbackje to podporované aj týmito triedami.

Vyzerá dobre!
Vyzerá dobre!
@
Vyberte si používateľské meno.
Zadajte platné mesto.
Zadajte platný štát.
Zadajte platný zips.
Pred odoslaním musíte súhlasiť.
<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>

Podporované prvky

Naše vzorové formuláre zobrazujú natívne textové <input>s vyššie, ale štýly overovania formulárov sú dostupné aj pre naše vlastné ovládacie prvky formulárov.

Príklad neplatného textu spätnej väzby
Ďalší príklad neplatného textu spätnej väzby
Príklad neplatnej spätnej väzby vlastného výberu
Príklad neplatnej spätnej väzby vlastného súboru
<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>

Popisy

Ak to rozloženie formulára umožňuje, môžete triedy zameniť .{valid|invalid}-feedbackza .{valid|invalid}-tooltiptriedy, aby sa zobrazila spätná väzba na overenie v štýlovom popise. Uistite sa, že máte na position: relativeňom rodiča na umiestnenie popisku. V nižšie uvedenom príklade to už naše triedy stĺpcov majú, ale váš projekt môže vyžadovať alternatívne nastavenie.

Looks good!
Looks good!
@
Please choose a unique and valid username.
Please provide a valid city.
Please provide a valid state.
Please provide a valid zip.
<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>

Vlastné formuláre

Pre ešte väčšie prispôsobenie a konzistenciu medzi prehliadačmi použite naše úplne vlastné prvky formulára, ktoré nahradia predvolené nastavenia prehliadača. Sú postavené na sémantickom a prístupnom označení, takže sú solídnou náhradou akéhokoľvek predvoleného ovládacieho prvku formulára.

Zaškrtávacie políčka a rádiá

Každé začiarkavacie políčko a rádio sú zabalené do jedného <div>so súrodencom <span>na vytvorenie vlastného ovládania a so <label>sprievodným textom. Štrukturálne je to rovnaký prístup ako náš predvolený .form-check.

Používame selektor súrodenca ( ~) pre všetky naše <input>stavy – napríklad – na :checkedsprávny štýl nášho vlastného indikátora formulára. V kombinácii s .custom-control-labeltriedou môžeme tiež štýlovať text pre každú položku na základe stavu <input>'.

Predvolené nastavenie skryjeme <input>a opacitypoužijeme .custom-control-labelna vytvorenie nového vlastného indikátora formulára na jeho mieste pomocou ::beforea ::after. Bohužiaľ nemôžeme vytvoriť vlastný, <input>pretože CSS contentna tomto prvku nefungujú.

V zaškrtnutých stavoch používame base64 vložené ikony SVG od Open Iconic . To nám poskytuje najlepšiu kontrolu nad štýlom a umiestnením v rôznych prehliadačoch a zariadeniach.

Začiarkavacie políčka

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

Vlastné začiarkavacie políčka môžu tiež využívať :indeterminatepseudo triedu, keď sú manuálne nastavené pomocou JavaScriptu (nie je k dispozícii žiadny atribút HTML na jej špecifikáciu).

Ak používate jQuery, niečo také by malo stačiť:

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

Rádia

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

V rade

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

Zakázané

Vlastné začiarkavacie políčka a rádiá môžu byť tiež zakázané. Pridajte disabledbooleovský atribút do <input>a vlastný indikátor a popis štítka sa automaticky upravia.

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

Vyberte ponuku

Vlastné <select>ponuky potrebujú iba vlastnú triedu .custom-selectna spustenie vlastných štýlov.

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

Môžete si tiež vybrať z malých a veľkých vlastných výberov, ktoré zodpovedajú našim textovým vstupom podobnej veľkosti.

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

Atribút multipleje tiež podporovaný:

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

Rovnako ako sizeatribút:

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

Prehliadač súborov

Vstup súboru je najdrsnejší zo všetkých a vyžaduje si dodatočný JavaScript, ak ho chcete spojiť s funkčným výberom súboru a vybraným textom názvu súboru.

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

Skryjeme predvolený súbor <input>cez opacitya namiesto toho naštylujeme <label>. Tlačidlo je vygenerované a umiestnené s ::after. Nakoniec deklarujeme a widtha heightna <input>pre správne medzery pre okolitý obsah.

Preklad alebo prispôsobenie reťazcov

:lang()Pseudotrieda sa používa na umožnenie prekladu textu „Prehľadávať“ do iných jazykov. Prepíšte alebo pridajte položky do $custom-file-textpremennej Sass pomocou príslušnej jazykovej značky a lokalizovaných reťazcov. Anglické struny je možné prispôsobiť rovnakým spôsobom. Tu je napríklad návod, ako možno pridať preklad do španielčiny (kód jazyka v španielčine je es):

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

Tu je lang(es)akcia týkajúca sa vlastného vstupu súboru pre španielsky preklad:

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

Aby sa zobrazil správny text, musíte správne nastaviť jazyk dokumentu (alebo jeho podstromu). Môžete to urobiť okrem iného pomocou atribútu langna prvku <html>alebo Content-Languagehlavičky HTTP .