Az automatikus kitöltés funkciója ma már egy kedvelt szolgáltatás az interneten. Ha valaki beír valamit egy űrlapmezőbe, a böngészők - ha a funkció be van kapcsolva és a böngésző támogatja - egy lista szótanácsokat kínálnak.
<input type="text" autocomplete="on" />
Az ilyen alkalmazások mostantól nagyon könnyen megvalósíthatók. Ehhez az input
-elemhez rendeljük az autocomplete
attribútumot.
<input type="text" autocomplete="off" />
Választásával az on
érték bekapcsolja a mező automatikus kitöltését. Ezután a böngésző megjegyzi a mezőbe bevitt értékeket, majd később egy választási listán keresztül kínálja azokat. Így a űrlapok kitöltése sokkal gyorsabb lesz.
Ez a viselkedés azonban nem minden mezőnél kívánatos. Ilyen esetekben az automatikus kitöltés explicit módon kiiktatható. Ehhez az autocomplete
attribútumhoz az off
értéket kell hozzárendelni.
<input type="text" autocomplete="off" />
Ezzel szemben az form
-elemhez is hozzá lehet adni az autocomplete
attribútumot. Attól függően, hogy itt az on
vagy az off
értéket használjuk, az automatikus kitöltés funkció a teljes űrlapon be vagy kikapcsolható.
<form autocomplete="on"> .. </form>
Mindenesetre, ha ellentétes utasítások szerepelnek az űrlapon belül, azok lesznek az irányadóak.
<form autocomplete="on"> Név: <input type="text" name="vname" autocomplete="off" /><br /> Keresztnév: <input type="text" name="nname" /><br /> Irányítószám: <input type="text" name="plz" /><br /> Hely: <input type="text" name="ort" /> </form>
Ebben a példában az automatikus kitöltés minden űrlapmezőre vonatkozna, mivel az bevezető form
-elemre az autocomplete
attribútumnak az on
értéke lett beállítva. Kivételt képez csak a vname
mező. Mivel ebben a mezőben az automatikus kitöltés explicit módon letiltásra került.
Az automatikus kitöltés működéséhez ezt a funkciót támogatnia kell a kiválasztott böngészőnek és nem szabad letiltva lennie. Ezenkívül a javaslatlistában csak azok az értékek jelennek meg, amelyek korábban már egyszer be lettek írva.
Hogy valóban befolyásolni lehessen az értékeket a javaslatlistában, az HTML5-ben bevezetésre került a datalist
-elem. Ez az elem nem jelent látható kimenetet a böngészőben. Az alárendelt option
-elemek segítségével definiálhatók az érték listákhoz. Egy példa:
<div> Nyelv: <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>
A list
attribútum segítségével logikai kapcsolatot hozunk létre az input
-elem és a datalist
-elem között. Ehhez azonos értékeket kell használni a list
-nál és a datalist
-elem id
attribútumánál.
Focus megadása
Egy űrlapmező automatikusan kap fókuszt, amikor az oldalt betöltik. Egy ilyen funkciót például a Google kezdőoldaláról is ismerhetsz. Ha ezt az oldalt betöltöd, azonnal be tudsz írni egy keresési kifejezést, anélkül hogy előtte manuálisan beállítanád a kurzort a keresés/beviteli mezőbe.
A HTML5-ben ilyen esetekre az autofocus
attribútum van. Ez az attribútum az oldal betöltésekor automatikusan fókuszt helyez azzal felruházott űrlapmezőre.
Példa:
<form> <input name="suchfeld" autofocus="autofocus" /> <input type="submit" value="Keresés" /> </form>
A böngészők, amelyek nem ismerik a autofocus
attribútumot, egyszerűen figyelmen kívül hagyják. Eznek az elhanyagolásnak nincs negatív hatása. (Bár ekkor természetesen a mező nem lesz fókuszban).
Bevitel ellenőrzése
Korábban HTML-saját eszközökkel nem lehetett ellenőrizni az űrlapbevitelt. Ha például azt akartuk megnézni, hogy valóban beírt-e egy felhasználó egy e-mail címet egy űrlapmezőbe, általában JavaScriptre vagy PHP-ra támaszkodtunk. Ezek a "trükkök" már nem szükségesek az HTML5-ben. Mert mostantól az HTML tartalmaz egy validációs API-t. És ez elég nagy dolog. Nagyon kis erőfeszítéssel ellenőrizhetők az űrlapbevitel.
<input id="vname" name="vname" type="text" required="required" />
Egy ezzel jelölt mezőt ki kell tölteni, tehát nem lehet üres.
De vigyázat: A mezőket validáláshoz bizonyos feltételeknek kell teljesülniük.
• A name
attribútumot meg kell adni az elemnek.
• Az elemnek egy form
elemen belül kell lennie, vagyis egy HTML űrlapon belül kell elhelyezkednie. Alternatívaként a kapcsolat az űrlappal a form
attribútumon keresztül is létrehozható.
• Az elemnek nem szabad a readonly
vagy a disabled
attribútummal rendelkeznie.
Tehát a helyes alkalmazás így nézne ki:
<form action="form.php"> <input id="vname" name="vname" type="text" required="required" /> <input type="submit" /> </form>
Ebben az esetben a böngésző ellenőrzi, hogy a mező ki lett-e töltve. Ha a mező üres, és mégis megpróbálják elküldeni az űrlapot, akkor a böngészőnek most hibaüzenetet kellene megjelenítenie.
Ennek a sorozatnak a folyamán már többször is utaltunk az űrlapmező típusokra, mint például az email, range, number, tel
és url
. Ezek a mezők nemcsak azt ellenőrzik, hogy tartalmaznak-e értéket, hanem azt is, hogy az azonosított érték helyes-e.
<form action="form.php"> <input id="email" name="email" type="email" /> <input type="submit" /> </form>
Például az email
típusú mezőknél ellenőrzik, hogy valóban helyes-e a beírt érték egy szintaktikailag helyes e-mail cím. Ha ez nem stimmel, a böngésző hibaüzenetet fog kiadni.
A hibaüzenet kimeneteléért a böngészők felelősek.
Mezők automata validálásának tiltása
Nem minden esetben kívánatos a beviteli mezők automatikus validálása. Ha megakarjuk akadályozni az egész űrlap validálását, akkor a nyitó form
elemnek hozzá kell rendelni a novalidate
attribútumot.
<form action="form.php" novalidate> <input id="email" name="email" type="email" /> <input type="submit" /> </form>
Alternatívaként a formnovalidate
attribútumot hozzá lehet adni egy küldés gombhoz. Ez például akkor érdekes, ha egy küldés gomb mellett egy gombot is kínálunk az űrlap ideiglenes mentésére.
<form action="form.cgi" method="post"> <input id="email" name="email" type="email" /> <input type="submit" name="submit" value="Senden" /> <input type="submit" formnovalidate="formnovalidate" value="Speichern" /> <input type="submit" formnovalidate="formnovalidate" value="Kijelentkezés" /> </form>
Ebben az esetben az űrlapot csak az első küldés gombbal validálják. A másik két gomb viszont a mentést és a kijelentkezést szolgálja. Ezekben az esetekben a validálás nem szükséges.