Selektory :valid a :invalid

Pomocí různých typů <input>u nebo atributem pattern je možné ve všech prohlížečích kromě IE 9 a starších používat tzv. selektory validace.

Použití

:valid {
  color: green;
}
:invalid {
  color: red;
}

Prohlížeč potom kontroluje, zda zadaný obsah odpovídá příslušnému typu nebo regulárnímu výrazu.

Tj. třeba <input type="email"> bude testovat přítomnost zavináče, <input type="number"> zase přítomnost pouze čísel.

Vlastní hláška

Při nastavení pravidel <input>u se potom při odeslání objeví chybová hláška. Výchozí universální rada pro pattern je poněkud knížecí (pro známé typy jako je e-mail jsou v prohlížečích hlášky ale relativně slušné).

Výchozí zpráva o špatném formátu políčka

Upravit text hlášky do vlastní podoby jde přes funkci setCustomValidity nebo atribut title.

Přes setCustomValidity

Jednoduchá funkce pro kontrolu může vypadat následovně. Při změně políčka (oninput) se této funkci předá odkaz na políčko (el) a vlastní hláška (hlaska).

function kontrola(el, hlaska) {
    if (el.validity.patternMismatch) {
        el.setCustomValidity(hlaska);
    }    
    else {
        el.setCustomValidity('');
    }
}

Ukázka

Přes title

Použití atributu title je sice úplně triviální, ale vlastní hláška se zobrazí až pod tou universální.

<input pattern="[a-z]*" title='Zadejte pouze malá písmena'>

Ukázka

Použití v praxi

V podporovaných prohlížečích (Opera, Firefox, Chrome, Internet Explorer 10) je využití:

  • pseudo-tříd :valid/:invalid,
  • zvláštních typů <input>ů,
  • atributů pattern nebo required

Spolu s nastavením vlastní hlášky docela jednoduchý nástroj, jak vytvořit uživatelsky relativně příjemnou validaci dat bez komplikovaných JavaScriptů.

Hlavní nevýhoda je asi grafická a i funkční nejednotnost napříč prohlížeči. A chybějící 100% kontrola na výsledkem jako v případě čistě javascriptových řešení.

To je všechno. Líbil se vám článek a chcete se dozvědět, až vyjde další?

Sledujte:

 

Připomínky mi pište do komentářů ↓

Before a after u inputu

Before a after u <input>u

Funguje, nebo nefunguje použití :before a :after u <input>ů?

Proč a jak používat :focus stav

Jak používat CSS stav :focus

Proč je důležité stylovat stav :focus. Jak toho automaticky docílit a jaké jsou s tím problémy.

Selektory :first-child a :last-child

Selektory :first-child a :last-child

Pro zaměření první/poslední položky v CSS lze místo přidávání tříd použít :first/last-child.

Zvýraznění aktivní kotvy

Zvýraznění aktivované kotvy (:target)

Pokud se v rámci stránky používají odkazy na jednotlivé #části, může být vhodné zvýrazněním ukázat, kam odkaz mířil.

CSS 3 selektory

Seznam všech CSS 3 selektorů

V CSS 3 je spousta selektorů, které s postupným mizením starších prohlížečů může dávat smysl znát.

Komentáře