VI. Formuláre a práca s nimi V súčasnosti sa objavuje v Internete čoraz viac stránok, ktoré s návštevníkom komunikujú prostredníctvom prvkov formulára. Formulárové prvky sprostredkúvajú výmenu informácií medzi nami a webovským serverom, ktorý ich spracováva a vyhodnocuje. Ako príklad možno uviesť objednávkové formuláre vyskytujúce sa napr. vo virtuálnych obchodných domoch alebo registračné formuláre slúžiace na overenie identity návštevníka... Medzi formulárové prvky patrí: vstupný riadok, výberová lišta (pull-down), textové pole (text area), kruhový volič (radio button), zaškrtávací volič (checkbox) a klasické tlačítko (button). Prepojenie formulára s JavaScriptom PRÍKLAD 6.1 - Práca s formulárom <HTML> <HEAD> <TITLE>Praca s formularom</TITLE> </HEAD> <BODY> <CENTER> <FORM> Napis svoje meno: <INPUT TYPE="text" NAME="meno" SIZE="25"> <P><INPUT TYPE="button" VALUE="Klikni sem!" onClick="alert('Ahoj '+meno.value+'!');"> </FORM> </CENTER> </BODY> </HTML> Po napísaní mena do vstupného riadku
a potvrdení tlačítka sa objaví na obrazovke informačné okno, ktoré pozdraví
návštevníka stránky jeho vlastným menom. Ako to celé funguje? Kontrola zadanej e-mail adresy Kontrola formulárových údajov s využitím JavaScriptu skrýva v sebe niekoľko výhod. Po vyplnení formulára dochádza ku kontrole vložených údajov na strane návštevníka a nie na strane webovského servera, čím sa šetrí čas, nezaťažuje sa našou požiadavkou server a šetrí sa prenosová kapacita Internetu. PRÍKLAD 6.2 - Kontrola zadanej e-mail adresy <HTML> <HEAD> <TITLE>Kontrola zadanej e-mail adresy</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- function kontrola(adresa) { if (adresa.indexOf("@")<1) { alert("Zadal si nespravnu e-mail adresu!"); pokracuj=false; } else pokracuj=true; } // --> </SCRIPT> </HEAD> <BODY> <CENTER> <FORM ACTION="/"> Tvoj email: <INPUT TYPE="text" NAME="email" SIZE="25" VALUE=""><P> <INPUT TYPE="submit" VALUE="Klikni sem!" onClick="kontrola(email.value);return pokracuj;"> </FORM> </CENTER> </BODY> </HTML> V tomto skripte sa vyskytuje nová funkcia - indexOf. Táto funkcia vracia pozíciu znaku v reťazci. Teda prehľadávame reťazec adresa na výskyt zavináča (@) a ak jeho pozícia je >1 odovzdáme činnosť formuláru. Ak je jeho pozícia -1, znamená to, že zadaná e-mail adresa neobsahuje @, tzn. že je zlá. V tomto prípade informujeme návštevníka, že zadal nesprávnu e-mail adresu. Po zadaní správnej adresy, činnosť prevezme formulár a vykoná sa operácia zadefinovaná v parametri ACTION. Inteligentný formulár - prihláška na koncert Na záver si naprogramujeme inteligentný formulár. Jeho inteligencia bude spočívať v tom, že bude dôslednejšie kontrolovať e-mail adresu (okrem kontroly prítomnosti zavináča, skontroluje, či je adresa z domény .cz resp. .sk a že či neobsahuje medzeru). Navyše ak začneme zadávať údaje do niektorého z prvkov formulára, v stavovom riadku sa nám zobrazí detailný popis prvku. Po kliknutí na tlačítko Odoslanie udajov, dochádza ku kontrole údajov a na obrazovke sa zjaví potvrdzovacie okno obsahujúce všetky nami vložené údaje. Ak potvrdíme OK, činnosť prevezme formulár a vykoná akciu definovanú v parametri ACTION. PRÍKLAD 6.3 - Inteligentný formulár - prihláška na koncert <HTML> <HEAD> <TITLE>Inteligentny formular - prihlaska na koncert</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- function kontrola(adresa) { if ( adresa.indexOf("@")<1 || adresa.indexOf(" ")>-1 || adresa.indexOf(".sk")<3 && adresa.indexOf(".cz")<3 ) { alert("Zadal si nespravnu slovensku/cesku e-mail adresu!"); document.formular.email.focus(); } else { obsah="Budu odoslane tieto udaje: \n\n"; for (i=0; i<document.formular.elements.length-2;i++) obsah=obsah+document.formular.elements[i].value+"\n"; if (confirm(obsah+"\nAk suhlasis s odoslanim udajov, klikni na OK")) document.formular.submit(); } } function wrt(text) { window.status=text; } // --> </SCRIPT> </HEAD> <BODY> <FONT SIZE="5"><U>Prihlaska na koncert</U><BR></FONT> <FONT SIZE="3">(zucastnit sa mozu iba slovaci/cesi!)</FONT> <FORM NAME="formular" ACTION="/"> <B>Meno: </B> <INPUT TYPE="text" SIZE="25" VALUE="" NAME="meno" onFocus="wrt('Napis svoje meno a priezvisko (napr. Jan Novak)');"> <BR><B>Zamestnanie: </B> <INPUT TYPE="text" SIZE="25" VALUE="" NAME="praca" onFocus="wrt('Napis, ake mas zamestnanie (napr. ucitel)');"> <BR><B>Tvoj email: </B> <INPUT TYPE="text" SIZE="25" VALUE="" NAME="email" onFocus="wrt('Napis svoju e-mail adresu (napr. Jan@Novak.sk)');"> <FONT COLOR="RED">* povinny udaj</FONT><P> <INPUT TYPE="button" VALUE="Odoslanie udajov" onClick="kontrola(email.value);"> <INPUT TYPE="reset" VALUE="Reset"> </FORM> </BODY> </HTML> Opäť tu máme niekoľko nových prvkov a noviniek. Po zadaní nesprávnej e-mail adresy dochádza k vyvolaniu výstražného okna a následne sa vyvolá funkcia focus(), ktorá nastaví kurzor do políčka s e-mail adresou. Pri zadávaní údajov do formulára, sa v stavovom riadku objavujú krátke popisy a tipy. To sa realizuje definovaním udalosti onFocus v jednotlivých prvkoch formulára. Po správnom vyplnení formulára, sa na obrazovke zjaví informačné okno s údajmi, ktoré sme práve zadali. Týmto máme poslednú možnosť potvrdiť/stornovať vyslanie údajov na server. Samotný výpis vložených údajov do okna funguje týmto spôsobom: zistí sa počet formulárových prvkov, spustí sa funkcia cyklu for od 0 až po počet prvkov-2 (aj tlačítka Odoslanie udajov a Reset sa zaraďujú medzi prvky, preto ich musíme vynechať). Do premennej obsah sa postupne vložia hodnoty jednotlivých prvkov formulára. Na koniec vyvoláme funkciu submit(), ktorá odošle údaje. Záverom... S formulármi v JavaScripte vieme robiť rôzne divy. Od kontroly vložených údajov, až po rôzne počítadlá (používané pri SMS bránach) a prezentačné prvky (hodiny, posun textu...). V tejto časti sme sa hlavne zamerali na kontrolu vložených údajov, pretože je to najčastejšia formulárová aplikácia JavaScriptu. Veľa úspechov s JavaScriptom vám želá, Rastislav Škultéty
NAHORU
|