HTML & CSS kezdőknek

HTML & CSS kezdőknek (17. rész): Űrlapok (5)

A bemutató összes videója HTML & CSS kezdőknek

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.

HTML és CSS kezdőknek (17. rész): Űrlapok (5)

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.

HTML & CSS kezdőknek (Rész 17): Űrlapok (5)



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.