Ciele
- Doplniť vašu stránku o formulár, kde návštevník môže vyjadriť názor o vašej stránke. Zabezpečiť validáciu formulára pomocou HTML a vytvoriť pre neho vhodný CSS štýl (Úloha 3).
- Oboznámiť sa so základmi jazyka JavaScript a základnou manipuláciou s Document Object Model, ktorý predstavuje dokument zobrazený v prehliadači.
- Vyskúšať si jednoduché spracovanie údajov z formulára a prácu s localStorage na poskytnutom príklade.
- Aplikovať jednoduché spracovanie údajov z formulára a prácu s localStorage na váš formulár, vytvorený pri plnení cieľa 1 (Úloha 3).
Úvod
Na tomto cvičení prejdeme od HTML a CSS k JavaScript.
Vytvoríte formulár pre príspevky (názory) návštevníkov vašej stránky
a pomocou jednoduchého JavaScript kódu údaje z tohto formulára spracujete a uložíte v
window.localStorage
.
Popri tom sa oboznámite aj so základnými prvkami jazyka JavaScript.
Objekt window.localStorage
slúži na dočasné uchovávanie údajov v prehliadači.
Zvykne sa používať aj pri vývoji webových aplikácii ako dočasná náhrada úložiska na strane servera.
Takto ho v tomto a nasledujúcom cvičení použijeme aj my.
Poznámka:
Všetko potrebné na splnenie dnešných úloh ste sa dozvedeli na prednáškach 4 až 6 ([1], [2], [3]).
Na podrobné oboznámenie sa s jazykom JavaScript odporúčame zdroje [5] a [6].
S JavaScript-ovskou časťou problematiky, ktorú máte dnes zvládnuť vás podrobne oboznámia aj úlohy v bodoch 3 a 4 tohto cvičenia.
Postup
-
Úloha: Na vhodnom mieste úvodnej stránky vášho blogu (Formulár má obsahovať nasledujúce riadiace elementy:
index.html
), ktorý ste tvorili na predchádzajúcich cvičeniach, vytvorte formulár pomocou ktorého budú návštevníci môcť vyjadriť názor o vašej stránke.- jednoduché textové pole
(
input typu text
) pre meno návštevníka, -
textové pole
(
input typu email
) pre e-mail návštevníka, -
textové pole
(
input typu url
), pre URL obrázka ktorým môže návštevník doplniť svoj príspevok, - Skupina aspoň dvoch zaškrtávacích polí typu
radio button
. - Aspoň jedno zaškrtávacie pole typu
checkbox
. - veľké viacriadkové textové pole
(
textarea
) pre text názoru návštevníka. - tlačidlá pre
odoslanie (
button type='submit'
) a zresetovanie (button type='reset'
) obsahu formulára.
label
. Význam zaškrtávacích polí zvoľte sami, tak aby súviseli s témou vašej stránky.
Povinné polia nech sú- meno návštevníka,
- e-mail návštevníka a
- text názoru návštevníka.
Úloha: Doplňte do formulára pole, kde návštevník môže zadať kľúčové slová, ktoré sa podľa neho hodia na vašu stránku. Pole prepojte s vhodným zoznamom hodnôt.Pole na zadávanie kľúčových slov nech jeinput typu text
. Zoznam slov nech súvisí z obsahom vašej stránky. Vytvorte ho s použitím elementovdatalist
aoption
.Poznámka: Ako takýto formulár zakomponovať do vašej stránky, môžete vidieť v príklade 55myTreesFormLStorageConsole.html. Stiahnuteľná verzia tohto príkladu je v archíve 55myTreesFormLStorageConsole.zip, dostupnom na [10]. Sada príkladov rôznych typov formulárov je dostupná na [8].
- jednoduché textové pole
(
-
Úloha: CSS štýl vašej stránky doplňte o nastavenie rôzneho zobrazenia pre povinné a nepovinné a validné a nevalidné prvky formulára.
Poznámka: Štýly pre formulár môžete vidieť v príklade 16formsAttribsCss.html. Stiahnuteľná verzia tohto príkladu je v archíve 16formsAttribsCss.zip, dostupnom na [10].
-
Formulár máte úspešne vytvorený, teraz sa zameriate na jazyk JavaScript, ktorý vám ho umožní oživiť. Najprv si zaexperimentujte s príkladmi ukazujúcimi základy JavaScript-u.Úloha: Stiahnite a rozbaľte archív s príkladmi 5jsBasicsDom.zip.Úloha: Experimentujte s príkladmi.Robte zmeny v kóde a vyskúšajte ich efekt v prehliadači. Viaceré príklady obsahujú zakomentovaný kód s alternatívnymi postupmi. Napríklad
51jsZaklady.html
s alternatívnymi zápismi základných príkazov JavaScript-u a56jsJqDomManip.html
s alternatívnymi možnosťami načítania skriptov.
Poznámka: Experimentovať môžete aj priamo v prehliadači pomocou vývojárskych nástrojov. Tie umožňujú aj ladenie kódu o čom sa viac dozviete v tutoriáli [7].
-
Teraz si vyskúšate doplniť do formulára v príklade 55myTreesFormLStorageConsole nový riadiaci element a rozšíriť JavaScript kód tohto príkladu tak, aby spracovával údaje aj z neho. Tento príklad je už vlastne web aplikáciou, preto ho tak budeme aj označovať. Samozrejme, ak je táto úloha pre vás triviálnou, môžete ju preskočiť a pokračovať ďalšou.Úloha: Do formulára sÚlohu môžete riešiť samostatne. Alebo môžete použiť nasledujúci kompletný postup riešenia:
id="opnFrm"
v aplikácii 55myTreesFormLStorageConsole doplňte elementinput type="checkbox"
sid="willReturnElm"
. V JavaScript kóde doplňte ukladanie obsahu z tohto elementu do vlastnostiwillReturn
objektov v poliopinions
a tiež dolocalStorage.myTreesComments
.
-
Stiahnite si a rozbaľte archív 55myTreesFormLStorageConsole.zip s aplikáciou.
Ďalej budete pracovať s touto rozbalenou verziou aplikácie. Všetky zmeny budete robiť v súbore
55myTreesFormLStorageConsole.html
.
-
Pred element
pridajte nasledujúci kód:<button type="submit">Send</button>
Teraz máte element s novým zaškrtávacím políčkom v html.<input type="checkbox" id="willReturnElm" /> <label for="willReturnElm">I will definitely return to this page.</label> <br><br>
-
Do funkcie
processOpnFrmData
pridajte za príkaz
nasledujúci kód:const nopOpn = document.getElementById("opnElm").value.trim();
Takto hodnotu z políčka (const nopWillReturn = document.getElementById("willReturnElm").checked;
true
pri zaškrtnutom,false
pri nezaškrtnutom) načítame z formulára do konštantynopWillReturn
.
-
Vo funkcii
processOpnFrmData
zmeňte kód
naconst newOpinion = { name: nopName, comment: nopOpn, created: new Date() };
Takto sa hodnota konštantyconst newOpinion = { name: nopName, comment: nopOpn, willReturn: nopWillReturn, created: new Date() };
nopWillReturn
zapíše do objektunewOpinion
.
newOpinion
do poľaopinions
a tiež dolocalStorage.myTreesComments
už nemusíme meniť. -
Stiahnite si a rozbaľte archív 55myTreesFormLStorageConsole.zip s aplikáciou.
Ďalej budete pracovať s touto rozbalenou verziou aplikácie. Všetky zmeny budete robiť v súbore
-
Keďže už viete, ako spracovanie v príklade 55myTreesFormLStorageConsole funguje, naprogramujte ho aj pre váš formulár.Úloha: Pre formulár vytvorený pri plnení cieľa 1 naprogramujte v JavaScript-e také spracovanie údajov ako v príklade 55myTreesFormLStorageConsole.Okrem skupiny zaškrtávacích polí typu
radio button
nech má údaj z každého riadiaceho elementu formulára samostatnú vlastnosť (položku) v objekte do ktorého sa ukladá (v príklade 55myTreesFormLStorageConsole to bol objektnewOpinion
). Skupina zaškrtávacích polí typuradio button
bude mať jednu spoločnú položku.Poznámka: Pre prístup k skupine zaškrtávacích polí typu
radio button
je lepšie použiť kolekciuelements
a atribútname
ako atribútyid
achecked
. Oba prístupy sú ukázané na nasledujúcom obrázku, kde sa pracuje s príkladom 11formsRadioCheck.html.
Zdroje
- Prednáška 4.
- Prednáška 5.
- Prednáška 6.
- Tutoriály a ďalšia dokumentácia k formulárom na MDN web docs, https://developer.mozilla.org/en-US/docs/Learn/Forms.
- JavaScript at MDN web docs (tutorials and reference), https://developer.mozilla.org/en-US/docs/Web/JavaScript.
- The Modern JavaScript Tutorial, https://javascript.info/.
- Debugging in Chrome, https://javascript.info/debugging-chrome.
- Príklady k HTML formulárom a ich formátovaniu pomocou CSS, https://hron.fei.tuke.sk/~korecko/WT/02htmlForms/.
- Príklady k základom JavaScript-u a práci s Document Object Model v JavaScript-e, https://hron.fei.tuke.sk/~korecko/WT/05JsZaklady/.
- Stiahnuteľné verzie vybraných príkladov k prednáškam, https://hron.fei.tuke.sk/~korecko/WT/Downloads/.