HTML & CSS pro začátečníky

HTML & CSS pro začátečníky (část 17): Formuláře (5)

Všechna videa tutoriálu

Automatické doplňování je dnes oblíbenou funkcí na internetu. Když začnete něco psát do pole formuláře, prohlížeče nabídnou seznam slovních návrhů, pokud je funkce povolena a podporována prohlížečem.

HTML & CSS pro začátečníky (část 17): Formuláře (5)

Takové aplikace je nyní možné velmi snadno implementovat. K tomu se přiřadí atribut autocomplete prvku input.

<input type="text" autocomplete="on" />



Hodnotou on se automatické doplňování pro pole aktivuje. Prohlížeč si nyní zapamatuje zadané hodnoty do pole a později je nabídne výběrovým seznamem. Tím lze formuláře vyplňovat výrazně rychleji.

Někdy však toto chování není žádoucí. V takových případech může být automatické doplňování explicitně deaktivováno. K tomu se hodnota atributu autocomplete nastaví na off.

<input type="text" autocomplete="off" />



Jako alternativu k tomu lze přidat atribut autocomplete prvku form. Podle toho, zda je zde použita hodnota on nebo off, je automatické doplňování pro celý formulář povoleno nebo zakázáno.

<form autocomplete="on">
..
</form>



Pokud jsou uvnitř formuláře uvedeny protichůdné údaje, platí tyto.

<form autocomplete="on">
   Jméno: <input type="text" name="vname" autocomplete="off" /><br />
   Příjmení: <input type="text" name="nname" /><br />
   PSČ: <input type="text" name="plz" /><br />
   Město: <input type="text" name="ort" />
</form>



V tomto příkladě by automatické doplnění bylo použito na všechna pole formuláře, protože v úvodním prvku form je hodnota autocomplete nastavena na on. Výjimkou je pouze pole vname, u kterého bylo automatické doplňování explicitně zakázáno.

Aby fungovalo automatické doplňování, musí tuto funkci daný prohlížeč podporovat a nesmí být deaktivována. Navíc jsou v návrhovém seznamu zobrazeny pouze takové hodnoty, které byly již dříve jednou zadané.

Aby bylo možné skutečně ovlivňovat hodnoty v návrhovém seznamu, byl v HTML5 zaveden prvek datalist. Tento prvek v prohlížeči nezobrazuje žádný viditelný výstup. Pomocí podřízených prvků option lze definovat hodnoty pro seznamy návrhů. Ukázka:

<div>
Jazyk:
<br />
<input type="text" autocomplete="on" list="sprache" />
</div>
<datalist id="sprache">
   <option value="HTML5"></option>
   <option value="XHTML"></option>
   <option value="PHP"></option>
   <option value="JavaScript"></option>
</datalist>



Pomocí atributu list prvku input se vytvoří logické spojení mezi vstupním polem a prvkem datalist. Pro splnění tohoto spojení musí být u hodnot atributu list a u atributu id prvku datalist použity stejné hodnoty.

HTML & CSS pro začátečníky (část 17): Formuláře (5)

Nastavit fokus

Na vstupní pole formuláře lze nastavit automaticky fokus při načtení stránky. Tuto funkci znáte například z úvodní stránky Google. Pokud je tato stránka načtena, můžete okamžitě začít psát hledaný výraz, aniž byste předtím ručně umístili kurzor do pole pro vyhledávání/vstupu.

HTML & CSS pro začátečníky (část 17): Formuláře (5)

V HTML5 existuje pro tyto případy atribut autofocus. Tento atribut zajišťuje, že vstupní pole s tímto atributem získá automaticky fokus při načtení stránky.

Ukázka:

<form>
  <input name="suchfeld" autofocus="autofocus" />
  <input type="submit" value="Hledat" />
</form>



Prohlížeče, které atribut autofocus nepodporují, jej prostě ignorují. To nemá žádný negativní dopad. (I když se pak pole nenačte do fokusu).

Prověření vstupů

Formulářové vstupy se doposud s prostředky HTML nedaly prověřovat samostatně. Pokud jste tedy například chtěli ověřit, zda uživatel do pole formuláře skutečně zadal e-mailovou adresu, obvykle jste k tomu potřebovali JavaScript nebo PHP. V HTML5 už se tyto "kličky" nevyžadují. HTML nyní přináší validační API. A to s sebou nese jistou sílu. S velmi málo úsilím lze nyní ověřovat formulářové vstupy.

HTML5 obsahuje několik pravidel, která určují způsob, jakým jsou pole validována. Například pole typu email jsou kontrolována na to, zda byla zadána správná e-mailová adresa.

url – kontroluje se na URL

email – kontroluje se na e-mailovou adresu

range – kontroluje se na desetinné číslo

number – kontroluje se na desetinné číslo

Aby bylo pole označeno jako povinné, přiřadí se mu atribut required.

<input id="vname" name="vname" type="text" required="required" />



Pole označené tímto způsobem musí být vyplněno, nesmí být tedy prázdné.

Ale pozor: Aby byla pole ověřena, musí být splněny určité podmínky.

• Prvek musí mít přiřazen atribut name.

• Prvek musí být umístěn uvnitř prvku form, tedy se nacházet v HTML formuláři. Alternativně k tomu může být spojení s formulářem vytvořeno také pomocí atributu form.

• Prvek nesmí mít atributy readonly ani disabled.

Špatný použití by mělo vypadat následovně:

<form action="form.php">
    <input id="vname" name="vname" type="text" required="required" />
    <input type="submit" />
 </form>



Zde by prohlížeč zkontroloval, zda bylo pole vyplněno. Pokud je pole prázdné a přesto se pokusíte odeslat formulář, měl by prohlížeč nyní zobrazit chybové hlášení.

HTML a CSS pro začátečníky (část 17): Formuláře (5)

V průběhu této série již bylo několikrát upozorněno na typy polí formuláře email, range, number, tel a url. Tato pole nejsou kontrolována pouze z hlediska existence hodnoty, ale také z hlediska správnosti zadané hodnoty.

<form action="form.php">
    <input id="email" name="email" type="email" />
    <input type="submit" />
 </form>



U polí typu email se například kontroluje, zda je zadaná hodnota skutečně syntakticky správnou e-mailovou adresou. Pokud tomu tak není, prohlížeč vypíše chybové hlášení.

HTML & CSS pro začátečníky (část 17): Formuláře (5)



Pro výpis chybové zprávy jsou zodpovědné prohlížeče.

Pole automaticky neověřujte

Ne vždy je žádoucí automaticky ověřovat vstupy. Pokud chcete zamezit ověřování celého formuláře, přiřaďte úvodnímu prvku form atribut novalidate.

<form action="form.php" novalidate>
    <input id="email" name="email" type="email" />
    <input type="submit" />
 </form>



Alternativně může být atributu formnovalidate přidán k tlačítku Odeslat. To je například zajímavé tehdy, když kromě tlačítka pro odeslání nabízíte také tlačítko pro dočasné uložení formuláře.

<form action="form.cgi" method="post">
    <input id="email" name="email" type="email" />
    <input type="submit" name="submit" value="Odeslat" />
    <input type="submit" 
    formnovalidate="formnovalidate"  value="Uložit" />
    <input type="submit" 
    formnovalidate="formnovalidate" value="Odhlásit se" />
 </form>



V tomto případě bude formulář validován pouze pomocí prvního tlačítka Odeslat. Ostatní dva slouží k uložení a odhlášení. Validace v těchto případech není nutná.