HTML5 a jeho atributy pro ověřování formulářů. Užitečné úryvky HTML5
Nejběžnější značka používaná ve formulářích je . Nemá uzavírací značku. Veškeré informace, které prohlížeč potřebuje zpracovat, jsou obsaženy přímo v tagu a je specifikován pomocí různých atributů. Sémantika se výrazně liší v závislosti na hodnotě atributu typ.
Atributy značek
type Hlavní atribut, který určuje typ prvku. Pokud atribut není zadán, použije se výchozí hodnota text.Možné hodnoty:
Ne všechny prohlížeče podporují typy přidané v HTML5.
Pokud prohlížeč nepodporuje některý z nových typů, bude předpokládat, že se jedná o .
Jak organizovat podporu pro starší prohlížeče je popsáno na příkladu data. ...
...
Autocomplete="off" Zakáže automatické doplňování pro toto pole. Velmi užitečné pro jednorázová pole pro zadání kódu, captcha atd.
.setAttribute("autocomplete","off"); autofocus Automaticky přijme zaostření při načtení stránky. Hodnotu lze nastavit třemi způsoby: ... Příklad emulace vlastnosti autofocus pro starší prohlížeče. vypnuto Znepřístupní prvek. Nepřístupné položky nejsou odesílány na server. ... Příklad emulace vlastnosti autofocus pro starší prohlížeče. jméno Název pole. Každé vstupní pole, které vytvoříte, musí mít svůj jedinečný název, jinak skript neurčuje, na která pole se výsledné hodnoty vztahují. Název vstupního pole se samozřejmě musí shodovat s názvem, který je pro něj popsán ve zpracovatelském programu. ... Příklad emulace vlastnosti autofocus pro starší prohlížeče. hodnota Výchozí hodnota pole nebo štítku na tlačítku.
velikost Velikost typového pole.
maxlength Omezení počtu znaků, které lze zadat do pole typu . readonly="readonly" nebo "" Zabraňuje úpravě prvku. povinné Automaticky zkontroluje, zda je pole vyplněno.
Chcete-li zvýraznit správně vyplněné povinné pole, můžete použít následující konstrukci stylu:
číslo
Tento seznam je zpočátku skrytý a zpřístupní se, když pole získá fokus nebo zadá text.
Typy prvků INPUT
Tlačítko BUTTON
Tlačítko TLAČÍTKO je určen pro ty případy, kdy potřebujete spustit nějaký skript. To znamená, že k tlačítku je připojena událost OnСlick a zavolá se požadovaná funkce. Atribut hodnota nastaví popisek na tlačítku. Atribut onclick
určuje obslužnou rutinu JavaScriptu, která je volána po kliknutí na tlačítko.
Chcete-li zvýraznit správně vyplněné povinné pole, můžete použít následující konstrukci stylu:
jméno
slouží pro JavaScript pojmenování tlačítka (nepřenáší se na server).
Příklad hodnota Tlačítko tlačítko SUBMIT Toto tlačítko slouží k odeslání formuláře. Ve většině prohlížečů je téměř k nerozeznání od tlačítka. Ta se sama nepřenáší, ale slouží pouze ke kontrole. Atribut pro tlačítko
Chcete-li zvýraznit správně vyplněné povinné pole, můžete použít následující konstrukci stylu:
Příklad a zavolá se požadovaná funkce. Aby bylo možné přenést údaje zadané do formuláře, není v obecném případě vůbec nutné kliknout na tlačítko
určuje obslužnou rutinu JavaScriptu, která je volána po kliknutí na tlačítko.
Chcete-li zvýraznit správně vyplněné povinné pole, můžete použít následující konstrukci stylu:
Příklad To způsobí přenos dat. Přijmout objednávku
určuje obslužnou rutinu JavaScriptu, která je volána po kliknutí na tlačítko.
Chcete-li zvýraznit správně vyplněné povinné pole, můžete použít následující konstrukci stylu:
Odmítnout
Přijmout jako pozorovatel
formnovalidat lze použít k zabránění ověření hodnot formuláře. Zkouška
určuje obslužnou rutinu JavaScriptu, která je volána po kliknutí na tlačítko.
Chcete-li zvýraznit správně vyplněné povinné pole, můžete použít následující konstrukci stylu:
tlačítko RESET
Toto je tlačítko jasného formuláře. Po kliknutí se všechny změněné prvky vrátí na výchozí hodnotu. Používá se poměrně zřídka. V některých případech to však může být docela užitečné.
Tip: Při výběru štítku tlačítka buďte opatrní RESETOVAT. Něco jako „Vymazat“, „Začít znovu“, „Vymazat vstup“ atd. by bylo zcela jasné (a hlavně intuitivní i pro figuríny). Obecně je nutné, aby uživatel neměl ani stín pochybností o účelu tohoto klíče. Resetovat
Vstupní pole TEXT Atribut, je vždy vyžadován, protože na základě tohoto parametru prohlížeč předá skriptu pár jméno=hodnota.
určuje obslužnou rutinu JavaScriptu, která je volána po kliknutí na tlačítko.
Chcete-li zvýraznit správně vyplněné povinné pole, můžete použít následující konstrukci stylu:
Text "Ivanov" je umístěn do vytvořeného pole jako počáteční hodnota.
Pokud uživatel neprovede žádné změny nebo klikne na tlačítko, bude skriptu odeslána hodnota Ivanov jako příjmení uživatele.
Pole pro zadání čísla ČÍSLO
určuje obslužnou rutinu JavaScriptu, která je volána po kliknutí na tlačítko.
Chcete-li zvýraznit správně vyplněné povinné pole, můžete použít následující konstrukci stylu:
Po zadání lze zlomkovou část oddělit buď tečkou (2.5) nebo čárkou (2.5).
určuje obslužnou rutinu JavaScriptu, která je volána po kliknutí na tlačítko.
Chcete-li zvýraznit správně vyplněné povinné pole, můžete použít následující konstrukci stylu:
Pokud uživatel zadá písmena, formulář nebude odeslán na server. Poslat.
určuje obslužnou rutinu JavaScriptu, která je volána po kliknutí na tlačítko.
Chcete-li zvýraznit správně vyplněné povinné pole, můžete použít následující konstrukci stylu:
Můžete nastavit minimální a maximální hodnoty pole a krok změny čísla. ... Příklad emulace vlastnosti autofocus pro starší prohlížeče. Hodnota kroku může být kladná nebo záporná, ale musí být větší než 0. Pokud číslo zadané do pole nesplňuje zadaná omezení, k odeslání na server nedojde.
step="any"
Pole
určuje obslužnou rutinu JavaScriptu, která je volána po kliknutí na tlačítko.
Skryté pole HIDDEN
určuje obslužnou rutinu JavaScriptu, která je volána po kliknutí na tlačítko.
Jedná se o speciální (skrytý) typ textového pole. Pokud jeden skript zpracovává několik různých formulářů, můžete ve skrytém poli na každém formuláři zadat identifikátor, který vám umožní identifikovat, se kterým formulářem máte co do činění. ...Další prvky formuláře.......Další prvky formuláře...
Prohlížeč nezobrazuje skryté pole, i když jej lze zjistit, pokud prohlížeč přepnete do režimu zobrazení souboru HTML a analyzujete text webové stránky. Skrytá pole jsou užitečná, když chcete poskytnout informace, které jsou vyžadovány pro skript, ale nechcete, aby je uživatel mohl změnit. Uvědomte si však, že zkušený uživatel může uložit váš formulář do souboru, upravit jej a poté odeslat upravený formulář na server. Proto byste se při vytváření jakéhokoli zabezpečení neměli spoléhat na skrytá pole.
Skript obdrží proměnnou s názvem FormVersion, kterému bude přiřazena hodnota 1.2. Tyto informace lze použít k určení, jak zpracovat zbytek informací přijatých z formuláře. Pokud uživatel změní tuto hodnotu, může se skriptový program chovat neočekávaným způsobem.
určuje obslužnou rutinu JavaScriptu, která je volána po kliknutí na tlačítko.
násobek
Máme tedy k dispozici různé prvky, které můžeme na formuláři použít. Můžeme do nich zadat různé hodnoty. Uživatelé však často zadávají hodnoty, které nejsou zcela správné: například se očekává zadání čísel, ale uživatel zadá písmena atd. A k prevenci a kontrole nesprávného vstupu v HTML5 existuje ověřovací mechanismus.
Výhodou použití validace v HTML5 je, že uživatel po nesprávném zadání může okamžitě obdržet chybové hlášení a provést příslušné změny zadaných údajů.
K vytvoření ověření pro prvky formuláře HTML5 se používá řada atributů:
povinné : Vyžaduje zadání hodnoty. Pro prvky textarea vyberte, zadejte (s typem text, heslo, zaškrtávací políčko, rádio, soubor, datum a čas-místní, datum, měsíc, čas, týden, číslo, e-mail, adresa URL, hledání, tel)
min a max : minimální a maximální povolené hodnoty. Pro vstupní prvek typu datetime-local, datum, měsíc, čas, týden, číslo, rozsah
vzor : Určuje vzor, kterému se musí vstupní data shodovat. Pro vstupní prvek s typem textu, hesla, e-mailu, adresy URL, vyhledávání, tel
povinný atribut
Povinný atribut vyžaduje, aby byla přítomna hodnota:
Pokud do těchto polí nezadáme žádná data, necháme je prázdná a klikneme na tlačítko Odeslat, prohlížeč nám zobrazí chybové zprávy a data nebudou odeslána na server:
V závislosti na prohlížeči se vykreslování zprávy může mírně lišit. Okraje nesprávného vstupního pole mohou být také zbarveny červeně. Například chování při odesílání prázdných zpráv ve Firefoxu:
Atributy max. a min
Chcete-li omezit rozsah vstupních hodnot, použijte atributy max a min:
atribut vzoru
Atribut vzor určuje vzor, se kterým by se data měla shodovat. Chcete-li definovat šablonu, jazyk tzv. . Podívejme se na nejjednodušší příklady:
Zde se pro zadání telefonního čísla používá regulární výraz \+\d-\d(3)-\d(3)-\d(4). To znamená, že první prvek v čísle by měl být znaménko plus +. Výraz \d představuje jakoukoli číslici od 0 do 9. Výraz \d(3) představuje tři po sobě jdoucí číslice a \d(4) představuje čtyři po sobě jdoucí číslice. To znamená, že tento výraz bude odpovídat telefonnímu číslu ve formátu „+1-234-567-8901“.
Pokud zadáme údaje, které neodpovídají tomuto vzoru, a klikneme na odeslat, prohlížeč zobrazí chybu:
Deaktivace ověřování
Ověření není vždy žádoucí; někdy je třeba jej zakázat. A v tomto případě můžeme použít buď atribut novalidate na prvku formuláře, nebo atribut formnovalidate na tlačítku Odeslat:
Poznámka: Protože pole jen pro čtení nemůže mít hodnotu, povinné nemá žádný vliv na vstupy se zadaným atributem jen pro čtení.
velikost
Atribut size je číselná hodnota udávající, kolik znaků má být vstupní pole široké. Hodnota musí být číslo větší než nula a výchozí hodnota je 20. Vzhledem k tomu, že šířky znaků se liší, může nebo nemusí být přesné a nemělo by se na to spoléhat; výsledný vstup může být užší nebo širší než zadaný počet znaků, v závislosti na znacích a písmu (používané nastavení písma).
Tohle ano ne nastavit limit, kolik znaků může uživatel zadat do pole. Určuje pouze přibližně, kolik jich lze najednou vidět. Chcete-li nastavit horní limit délky vstupních dat, použijte atribut.
Nestandardní atributy
Pro vstupní pole telefonního čísla jsou k dispozici následující nestandardní atributy. Obecným pravidlem je, že byste se měli vyhnout jejich používání, pokud tomu nelze pomoci.
Atribut | Popis |
---|---|
Zda povolit nebo nepovolit automatické opravy při úpravách tohoto vstupního pole. Pouze Safari. | |
Řetězec označující typ akce, která bude provedena, když uživatel při úpravě pole stiskne klávesu Enter nebo Return; toto se používá k určení vhodného označení pro tuto klávesu na virtuální klávesnici. Firefox pouze pro Android. |
automatické opravy
Rozšíření Safari, atribut autocorrect je řetězec, který označuje, zda aktivovat automatickou opravu, když uživatel upravuje toto pole. Povolené hodnoty jsou:
Zapnuto Povolit automatickou opravu překlepů a také zpracování nahrazování textu, pokud jsou nějaké nakonfigurovány.
vypnuto Zakázat automatické opravy a nahrazování textu.
mozactionhint
Rozšíření Mozilly podporované Firefoxem pro Android, které poskytuje nápovědu, jaká akce bude provedena, pokud uživatel při úpravě pole stiskne klávesu Enter nebo Return. Tyto informace se používají k rozhodnutí, jaký typ štítku použít na klávesu Enter na virtuální klávesnici.
Povolené hodnoty jsou: go , done , next , search a send . Prohlížeč se pomocí této nápovědy rozhodne, jaký štítek umístí na klávesu Enter.
Telefonní čísla jsou velmi často shromažďovaným typem dat na webu. Při vytváření jakéhokoli druhu registrace nebo webu elektronického obchodu, například, budete pravděpodobně muset požádat uživatele o telefonní číslo, ať už pro obchodní účely nebo pro účely nouzového kontaktu. Vzhledem k tomu, jak běžně se zadávají telefonní čísla, je nešťastné, že řešení „jedna velikost pro všechny“ pro ověřování telefonních čísel není praktické.
Naštěstí můžete zvážit požadavky svého vlastního webu a sami implementovat odpovídající úroveň ověření. Podrobnosti viz níže.
Vlastní klávesnice
Jednou z hlavních výhod spočívá v tom, že mobilní prohlížeče zobrazují speciální klávesnici pro zadávání telefonních čísel. Zde je například ukázka toho, jak vypadají klávesnice na několika zařízeních.
Firefox pro Android | WebKit iOS (Safari/Chrome/Firefox) |
---|---|
Jednoduchý tel. vstup
Ve své nejzákladnější podobě lze tel vstup implementovat takto:
Tady se neděje nic magického. Při odeslání na server budou výše uvedená vstupní data reprezentována jako například telNo=+12125553151 .
Zástupné symboly
Někdy je užitečné nabídnout kontextovou nápovědu, jakou formu by měla mít vstupní data. To může být zvláště důležité, pokud design stránky nenabízí popisné štítky pro každý prvek se používá k vytváření interaktivních ovládacích prvků pro web založené formuláře za účelem přijímání dat od uživatele; k dispozici je široká škála typů vstupních dat a ovládacích widgetů v závislosti na zařízení a uživatelském agentovi."> . Toto je místo zástupné symboly vstoupit Zástupný symbol je hodnota, která demonstruje formu, jakou by hodnota měla mít, a to uvedením příkladu platné hodnoty, která se zobrazí v editačním poli, když je hodnota prvku "" . Jakmile jsou do pole vložena data, zástupný symbol zmizí. ; pokud se pole vyprázdní, zástupný symbol se znovu objeví.
Zde máme tel vstup se zástupným symbolem 123-4567-8901. Všimněte si, jak zástupný symbol mizí a znovu se objevuje při manipulaci s obsahem editačního pole.
Ovládání velikosti vstupu
Můžete ovládat nejen fyzickou délku vstupního pole, ale také minimální a maximální povolené délky pro samotný vstupní text.
Velikost fyzického vstupního prvku
Fyzickou velikost vstupního pole lze ovládat pomocí atributu size. Pomocí něj můžete určit počet znaků, které může vstupní pole zobrazit najednou. V tomto příkladu je například textové pole tel 20 znaků široké:
Délka hodnoty prvku
Velikost je oddělena od omezení délky na zadaném telefonním čísle. Pomocí atributu minlength můžete zadat minimální délku ve znacích pro zadané telefonní číslo; obdobně použijte maxlength pro nastavení maximální délky zadaného telefonního čísla.
Níže uvedený příklad vytvoří pole pro zadání telefonního čísla o šířce 20 znaků, které vyžaduje, aby obsah nebyl kratší než 9 znaků a delší než 14 znaků.
Nabízí navrhované hodnoty
Když to uděláte o krok dále, můžete poskytnout seznam výchozích hodnot telefonních čísel, ze kterých si uživatel může vybrat. Chcete-li to provést, použijte atribut seznamu. To neomezuje uživatele na tyto možnosti, ale umožňuje mu rychleji vybrat běžně používaná telefonní čísla. Nabízí také nápovědu k automatickému doplňování . Atribut seznamu určuje ID prvku, který obsahuje sadu
S prvkem obsahuje sadu
Zde je snímek obrazovky, jak by to mohlo vypadat:
Validace
Jak jsme se již zmínili dříve, je poměrně obtížné poskytnout univerzální řešení ověřování telefonních čísel na straně klienta. Co tedy můžeme dělat? Zvažme některé možnosti.
Důležité: Ověření formuláře HTML je ne náhrada za skripty na straně serveru, které zajistí, že zadaná data budou ve správném formátu, než budou vpuštěna do databáze. Pro někoho je příliš snadné provést úpravy kódu HTML, které mu umožní obejít ověření nebo jej úplně odstranit. Je také možné, že někdo jednoduše zcela obejde váš HTML a odešle data přímo na váš server. Pokud se vašemu kódu na straně serveru nepodaří ověřit data, která přijímá, může dojít ke katastrofě, když budou do vaší databáze vložena nesprávně naformátovaná data (nebo data, která jsou příliš velká, nesprávného typu atd.).
Vyžadování telefonních čísel
Můžete to udělat tak, že prázdný vstup je neplatný a nebude odeslán na server pomocí požadovaného atributu. Použijme například tento HTML:
A pojďme zahrnout následující CSS pro zvýraznění platných položek zaškrtnutím a neplatných položek křížkem:
Div ( margin-bottom: 10px; position: relativní; ) input ( width: 100px; ) input + span ( padding-right: 30px; ) input:invalid+span:after ( position: absolute; content: "✖"; padding -left: 5px; color: #8b0000; ) input:valid+span:after ( position: absolute; content: "✓"; padding-left: 5px; color: #009000; )
Výstup vypadá takto:
Ověření vzoru
Pokud chcete dále omezit zadávaná čísla tak, aby se také musela shodovat s konkrétním vzorem, můžete použít atribut vzor, který jako hodnotu přebírá regulární výraz, kterému se zadané hodnoty musí shodovat.
V tomto příkladu použijeme stejné CSS jako dříve, ale naše HTML se změní, aby vypadalo takto:
Div ( margin-bottom: 10px; position: relativní; ) input ( width: 100px; ) input + span ( padding-right: 30px; ) input:invalid+span:after ( position: absolute; content: "✖"; padding -left: 5px; color: #8b0000; ) input:valid+span:after ( position: absolute; content: "✓"; padding-left: 5px; color: #009000; )
Všimněte si, jak je zadaná hodnota hlášena jako neplatná, pokud neodpovídá vzor xxx-xxx-xxxx; například 41-323-421 "nebude přijato. Nebude přijato ani 800-MDN-ROCKS. Nicméně 865-555-6502 bude přijato. Tento konkrétní vzor je zjevně užitečný pouze pro určité lokality - ve skutečné aplikaci vy" d pravděpodobně bude nutné změnit použitý vzor v závislosti na lokalitě uživatele.
Příklady
V tomto příkladu představujeme jednoduché rozhraní s prvkem představuje ovládací prvek, který poskytuje nabídku možností">
Každý vstup má atribut zástupného symbolu, který vidí nápovědu k tomu, co do něj zadat, vzor pro vynucení určitého počtu znaků pro požadovanou sekci a atribut aria-label, který obsahuje nápovědu, která se přečte čtečce obrazovky. uživatelů o tom, co do něj zadat.
JavaScript je relativně jednoduchý – obsahuje obslužnou rutinu události onchange, která, když je
Var selectElem = document.querySelector("select"); var inputElems = document.querySelectorAll("vstup"); selectElem.onchange = function() ( for(var i = 0; i< inputElems.length; i++) { inputElems[i].value = ""; } if(selectElem.value === "NÁS") { inputElems.parentNode.style.display = "inline"; inputElems.placeholder = "Kód oblasti"; inputElems.pattern = "{3}"; inputElems.placeholder = "První část"; inputElems.pattern = "{3}"; inputElems.setAttribute("aria-label","First part of number"); inputElems.placeholder = "Druhá část"; inputElems.pattern = "{4}"; inputElems.setAttribute("aria-label","Second part of number"); } else if(selectElem.value === "Spojené království") { inputElems.parentNode.style.display = "none"; inputElems.placeholder = "Kód oblasti"; inputElems.pattern = "{3,6}"; inputElems.placeholder = "Místní číslo"; inputElems.pattern = "{4,8}"; inputElems.setAttribute("aria-label","Local number"); } else if(selectElem.value === "Německo") { inputElems.parentNode.style.display = "inline"; inputElems.placeholder = "Kód oblasti"; inputElems.pattern = "{3,5}"; inputElems.placeholder = "První část"; inputElems.pattern = "{2,4}"; inputElems.setAttribute("aria-label","First part of number"); inputElems.placeholder = "Druhá část"; inputElems.pattern = "{4}"; inputElems.setAttribute("aria-label","Second part of number"); } }
Příklad vypadá takto:
To je zajímavý nápad, který ukazuje potenciální řešení problému nakládání s mezinárodními telefonními čísly. Museli byste samozřejmě rozšířit příklad, abyste poskytli správný vzor pro potenciálně každou zemi, což by bylo hodně práce a stále by neexistovala spolehlivá záruka, že uživatelé zadají svá čísla správně.
Přivádí vás to k přemýšlení, zda stojí za to jít do všech těchto problémů na straně klienta, když můžete nechat uživatele zadat své číslo v libovolném formátu, který chce na straně klienta, a poté jej ověřit a dezinfikovat na serveru. Ale tato volba je na vás.
Div ( margin-bottom: 10px; position: relativní; ) input ( width: 100px; ) input + span ( padding-right: 30px; ) input:invalid+span:after ( position: absolute; content: "✖"; padding -left: 5px; color: #8b0000; ) input:valid+span:after ( position: absolute; content: "✓"; padding-left: 5px; color: #009000; )
Specifikace
Specifikace | Postavení | Komentář | |||||||
---|---|---|---|---|---|---|---|---|---|
Životní standard HTML Definice " “ v té specifikaci. | Opera | Safari | Webové zobrazení Android | Chrome pro Android | Edge Mobile | Firefox pro Android | Opera pro Android | Safari na iOS | Internet Samsung |
type="tel" | Plná podpora Chrome Ano | Plná podpora Edge Ano | Plná podpora Firefoxu Ano | Plná podpora IE 10 |