# Kurkite bankinę programėlę 2 dalis: Sukurkite prisijungimo ir registracijos formą
```mermaid
journey
title Jūsų formos kūrimo kelionė
section HTML pamatų
Suprasti formos elementus: 3: Studentas
Išmokti įvesties tipus: 4: Studentas
Įvaldyti prieinamumą: 4: Studentas
section JavaScript integracija
Tvarkyti formos pateikimą: 4: Studentas
Įgyvendinti AJAX komunikaciją: 5: Studentas
Apdoroti serverio atsakymus: 5: Studentas
section Validavimo sistemos
Kurti daugiapakopį validavimą: 5: Studentas
Pagerinti naudotojo patirtį: 5: Studentas
Užtikrinti duomenų integralumą: 5: Studentas
```
## Priešpaskaitos testas
[Priešpaskaitos testas](https://ff-quizzes.netlify.app/web/quiz/43)
Ar kada nors užpildėte formą internete ir ji atmetė jūsų el. pašto formatą? Ar praradote visą informaciją paspaudę siųsti? Visi esame susidūrę su tokiomis erzinančiomis patirtimis.
Formos yra tiltas tarp jūsų vartotojų ir jūsų programėlės funkcionalumo. Kaip ir oro eismo kontrolieriai naudoja atsargias protokolų taisykles, kad lėktuvai saugiai pasiektų tikslą, taip gerai sukurta forma teikia aiškią grįžtamąją informaciją ir užkerta kelią brangioms klaidoms. Prastos formos gali atbaidyti vartotojus greičiau nei nesusipratimai užimtoje oro uosto aplinkoje.
Šioje pamokoje paversime jūsų statinę bankinę programėlę į interaktyvią aplikaciją. Išmoksite kurti formas, kurios tikrina įvesties duomenis, bendrauja su serveriais ir suteikia naudingą grįžtamąjį ryšį. Įsivaizduokite tai kaip valdymo sąsają, leidžiančią vartotojams naršyti programos funkcijas.
Pamokos pabaigoje turėsite pilną prisijungimo ir registracijos sistemą su validacija, kuri nukreipia vartotojus link sėkmės, o ne frustracijos.
```mermaid
mindmap
root((Formos kūrimas))
HTML pagrindas
Semantiniai elementai
Įvesties tipai
Prieinamumas
Žymės susiejimas
Vartotojo patirtis
Patvirtinimo grįžtamasis ryšys
Klaidos prevencija
Įkėlimo būsena
Sėkmės žinutės
JavaScript integracija
Įvykių valdymas
AJAX komunikacija
Duomenų apdorojimas
Klaidų valdymas
Patvirtinimo sluoksniai
HTML5 patvirtinimas
Kliento pusės logika
Serverio pusės saugumas
Progresyvus gerinimas
Modernūs modeliai
Fetch API
Async/Await
Formos duomenų API
Promisų valdymas
```
## Priešprielaidos
Prieš pradėdami kurti formas, įsitikinkime, kad viskas tinkamai įdiegta. Ši pamoka tęsia ten, kur baigėme ankstesnėje, tad jei praleidote ankstesnę dalį, verta grįžti ir išmokti pagrindus.
### Reikalinga įranga
| Komponentas | Būsena | Aprašymas |
|-----------|--------|-------------|
| [HTML Šablonai](../1-template-route/README.md) | ✅ Būtina | Jūsų pagrindinė bankinės programėlės struktūra |
| [Node.js](https://nodejs.org) | ✅ Būtina | JavaScript vykdymo aplinka serveriui |
| [Banko API serveris](../api/README.md) | ✅ Būtina | Užpakalinė paslauga duomenų saugojimui |
> 💡 **Kūrimo patarimas**: Jūs vienu metu paleisite du atskirus serverius – vieną priekinės dalies bankinę programėlę, kitą – užpakalinių API paslaugą. Šis išdėstymas atspindi realų kūrimą, kur frontend ir backend paslaugos veikia nepriklausomai.
### Serverio konfigūracija
**Jūsų kūrimo aplinka apims:**
- **Priekinės dalies serveris**: aptarnauja jūsų bankinę programėlę (dažniausiai prievadas `3000`)
- **API užpakalinis serveris**: tvarko duomenų saugojimą ir gavimą (prievadas `5000`)
- **Abi serveriai** gali veikti vienu metu be konfliktų
**Bandoma API jungtis:**
```bash
curl http://localhost:5000/api
# Tikėtinas atsakymas: "Bank API 1.0.0 versija"
```
**Jei matote API versijos atsakymą, galite tęsti!**
---
## Supratimas apie HTML formas ir valdiklius
HTML formos yra vartotojų komunikacija su internetine programa. Įsivaizduokite jas kaip telegrafo sistemą XIX a., sujungusią tolimus taškus – tai komunikacijos protokolas tarp vartotojo ketinimo ir programos atsako. Protingai sukurtos formos aptinka klaidas, gide įvesties formatavimą ir pateikia naudingas užuominas.
Modernios formos yra daug sudėtingesnės už paprastą teksto įvedimą. HTML5 pristatė specializuotus įvesčių tipus, kurie automatiškai atlieka el. pašto validaciją, skaičių formatavimą ir datos parinkimą. Šie patobulinimai naudingesni tiek prieinamumui, tiek mobiliųjų vartotojų patirčiai.
### Esminiai formos elementai
**Pagrindiniai blokai, kurių reikia kiekvienai formoje:**
```html
```
**Šis kodas atlieka:**
- **Sukuria** formos konteinerį su unikaliu identifikatoriumi
- **Nurodo** HTTP metodą duomenų siuntimui
- **Susieja** etiketes su įvestimis dėl prieinamumo
- **Apibrėžia** siuntimo mygtuką formos apdorojimui
### Modernūs įvesčių tipai ir atributai
| Įvesčio tipas | Paskirtis | Naudojimo pavyzdys |
|------------|---------|---------------|
| `text` | Bendras teksto įvedimas | `` |
| `email` | El. pašto validacija | `` |
| `password` | Slapto teksto įvedimas | `` |
| `number` | Skaitmeninis įvedimas | `` |
| `tel` | Telefono numeriai | `` |
> 💡 **Modernios HTML5 privalumas**: Naudojant specifinius įvesčių tipus automatiškai vykdoma validacija, pritaikoma tinkama mobiliųjų klaviatūra ir gerinama prieinamumo palaikymas be papildomo JavaScript!
### Mygtukų tipai ir elgsena
```html
```
**Ką veikia kiekvieno tipo mygtukas:**
- **Siuntimo mygtukai**: suaktyvina formos išsiuntimą ir siunčia duomenis į nurodytą galinį tašką
- **Atstatymo mygtukai**: atkurią visus formos laukus į pradinę būsena
- **Paprasti mygtukai**: neturi numatytos elgsenos, reikalauja sadomų JavaScript funkcijų
> ⚠️ **Svarbi pastaba**: `` elementas yra savaiminis uždaromas ir nereikalauja uždarančios žymės. Moderni praktika rašyti `` be užbaigiančio brūkšnio.
### Kurkite prisijungimo formą
Dabar sukurkime praktišką prisijungimo formą, demonstruojančią modernias HTML formų praktikas. Pradėsime nuo pagrindinės struktūros ir palaipsniui praturtinsime ją prieinamumo funkcijomis bei validacija.
```html
Bank App
Login
```
**Kas čia vyksta:**
- **Struktūruoja** formą su semantinėmis HTML5 žymėmis
- **Grupuoja** susijusius elementus `div` konteineriuose su prasmingomis klasėmis
- **Susieja** etiketes su įvesčių laukais naudodamas `for` ir `id` atributus
- **Papildo** moderniais atributais, tokiais kaip `autocomplete` ir `placeholder`, geresnei UX
- **Prideda** `novalidate`, kad validaciją rūpintųsi JavaScript, o ne naršyklė
### Teisingų etikčių galia
**Kodėl etiketės svarbios šiuolaikiniame žiniatinklio kūrime:**
```mermaid
graph TD
A[Žymės Elementas] --> B[Ekrano Skaitytuvo Palaikymas]
A --> C[Spustelėjimo Taško Išplėtimas]
A --> D[Formos Validacija]
A --> E[SEO Privalumai]
B --> F[Prieinama visiems vartotojams]
C --> G[Geresnė mobili patirtis]
D --> H[Aiškūs klaidų pranešimai]
E --> I[Geresnė paieškos reitingas]
```
**Ką užtikrina teisingi etiketės:**
- **Leidžia** ekrano skaitytuvams aiškiai paskelbti formos laukus
- **Išplečia** spustelėjimo sritį (spustelėjus etiketę, fokusuojamas laukas)
- **Gerina** mobiliųjų įrenginių naudojimą su didesnėmis lietimo zonomis
- **Palaiko** formos validaciją su prasmingomis klaidų žinutėmis
- **Stiprina** SEO, įtraukiant semantinę prasmę formos elementams
> 🎯 **Prieinamumo tikslas**: Kiekvienas formos laukas turi turėti susijusią etiketę. Ši paprasta praktika leidžia visiems, įskaitant neįgaliuosius, naudotis formomis ir pagerina vartotojų patirtį.
### Registracijos formos kūrimas
Registracijos forma reikalauja daugiau informacijos norint sukurti pilną vartotojo paskyrą. Sukurkime ją su moderniomis HTML5 galimybėmis ir pagerintu prieinamumu.
```html
Register
```
**Aukščiau mes:**
- **Organizavome** kiekvieną lauką konteinerių `div`, kad geriau stilizuoti ir išdėstyti
- **Pridėjome** tinkamus `autocomplete` atributus, kad naršyklė palaikytų automatinį užpildymą
- **Įtraukėme** naudingus laikinuosius tekstus, kurie padeda vartotojui įvesti duomenis
- **Nustatėme** prasmingas numatytąsias reikšmes naudodami `value` atributą
- **Panaudojome** validavimo atributus, tokius kaip `required`, `maxlength` ir `min`
- **Naudojome** `type="number"` balanso laukui, palaikant skaitmenis su kableliu
### Įvesčių tipų ir elgsenos tyrinėjimas
**Modernūs įvesčių tipai suteikia papildomą funkcionalumą:**
| Funkcija | Nauda | Pavyzdys |
|---------|---------|----------|
| `type="number"` | Skaitmeninė klaviatūra mobiliesiems | Lengvesnė balanso įvestis |
| `step="0.01"` | Dešimtainio tikslumo kontrolė | Leidžia įvesti centus valiutoje |
| `autocomplete` | Naršyklės automatinis užpildymas | Greitesnis formos užpildymas |
| `placeholder` | Kontekstinės užuominos | Veda vartotojo lūkesčius |
> 🎯 **Prieinamumo iššūkis**: Pabandykite naudoti formas naudodami tik klaviatūrą! Naudokite `Tab` judėjimui tarp laukų, `Space` žymėjimo langeliams ir `Enter` siuntimui. Tai padės suprasti, kaip ekrano skaitytuvo vartotojai sąveikauja su jūsų formomis.
### 🔄 **Pedagoginis patikrinimas**
**Formos pagrindo supratimas**: Prieš pradedant naudoti JavaScript, įsitikinkite, kad suprantate:
- ✅ Kaip semantinis HTML kuria prieinamas formų struktūras
- ✅ Kodėl įvesčių tipai svarbūs mobiliųjų klaviatūroms ir validacijai
- ✅ Santykį tarp etikečių ir formos valdiklių
- ✅ Kaip formos atributai veikia numatytą naršyklės elgseną
**Greitas savitikrinimas**: Kas nutinka, jei siunčiate formą be JavaScript tvarkymo?
*Atsakymas: Naršyklė vykdo numatytą siuntimą, dažniausiai nukreipdama į veiksmo URL*
**HTML5 formų privalumai**: Modernios formos suteikia:
- **Įmontuotą validaciją**: Automatinį el. pašto ir skaičiaus formato tikrinimą
- **Mobiliojo optimizavimą**: Tinkamas klaviatūras skirtingiems įvesčių tipams
- **Prieinamumą**: Ekrano skaitytuvų palaikymą ir klaviatūros navigaciją
- **Progresyvią gerinimo galimybę**: Veikia net kai JavaScript išjungtas
## Suprasti formos siuntimo metodus
Kai kas nors užpildo jūsų formą ir paspaudžia siuntimą, tie duomenys turi kur nors patekti – dažniausiai į serverį, kuris gali juos išsaugoti. Yra keletas būdų, kaip tai vyksta, ir žinojimas, kurį naudoti, gali sutaupyti jums bėdų ateityje.
Pažiūrėkime, kas iš tikrųjų vyksta, kai kas nors paspaudžia siuntimo mygtuką.
### Numatytoji formos elgsena
Pirmiausia pažiūrėkime, kas vyksta su paprastu formos siuntimu:
**Išbandykite savo esamas formas:**
1. Paspauskite *Registruotis* mygtuką savo formoje
2. Stebėkite pakeitimus naršyklės adreso juostoje
3. Atkreipkite dėmesį, kaip puslapis persikrauna ir duomenys atsiranda URL

### HTTP metodų palyginimas
```mermaid
graph TD
A[Formos pateikimas] --> B{HTTP metodas}
B -->|GET| C[Duomenys URL]
B -->|POST| D[Duomenys užklausos kūne]
C --> E[Matoma adreso juostoje]
C --> F[Ribotas duomenų dydis]
C --> G[Galima pažymėti žymę]
D --> H[Paslėpta nuo URL]
D --> I[Didelė duomenų talpa]
D --> J[Saugiau]
```
**Suprasti skirtumus:**
| Metodas | Paskirtis | Duomenų vieta | Saugumo lygis | Dydžio limitas |
|--------|----------|---------------|----------------|-------------|
| `GET` | Paieškos užklausos, filtrai | URL parametrai | Žemas (matomas) | ~2000 simbolių |
| `POST` | Vartotojų paskyros, jautri informacija | Užklausos kūnas | Aukštesnis (paslėptas) | Nėra praktiško limito |
**Pagrindiniai skirtumai:**
- **GET**: Priduria formos duomenis prie URL kaip užklausos parametrus (tinka paieškoms)
- **POST**: Įtraukia duomenis į užklausos kūną (būtina jautriai informacijai)
- **GET trūkumai**: Dydžio apribojimai, matomi duomenys, istoriniai naršyklės įrašai
- **POST privalumai**: Didelė duomenų talpa, privatumo apsauga, failų įkėlimas
> 💡 **Gera praktika**: Naudokite `GET` paieškos formoms ir filtrams (duomenų gavimui), `POST` naudokite vartotojo registracijai, prisijungimui ir duomenų kūrimui.
### Formos siuntimo konfigūravimas
Konfigūruokime registracijos formą taip, kad ji tinkamai bendrautų su užpakalinio API serverio pagalba POST metodu:
```html
```
**Patobulinto tikrinimo supratimas:**
- **Derina** privalomų laukų ženklus su naudingais aprašais
- **Apima** `pattern` atributus formatų tikrinimui
- **Prideda** `title` atributus prieinamumui ir patarimams
- **Prideda** pagalbinį tekstą vartotojo nurodymams
- **Naudoja** semantinę HTML struktūrą geresniam prieinamumui
### Išplėstinės tikrinimo taisyklės
**Ką atlieka kiekviena taisyklė:**
| Laukas | Tikrinimo taisyklės | Vartotojo privalumas |
|-------|------------------|--------------|
| Slapyvardis | `required`, `minlength="3"`, `maxlength="20"`, `pattern="[a-zA-Z0-9_]+"` | Užtikrina galiojančius ir unikalius identifikatorius |
| Valiuta | `required`, `maxlength="3"`, `pattern="[A-Z$€£¥₹]+"` | Priima įprastus valiutų simbolius |
| Balansas | `min="0"`, `step="0.01"`, `type="number"` | Neleidžia neigiamų likučių |
| Aprašymas | `maxlength="100"` | Protingi ilgumo apribojimai |
### Tikrinimo elgesio testavimas
**Išbandykite šias situacijas:**
1. **Pateikite** formą su tuščiais privalomais laukais
2. **Įveskite** trumpesnį nei 3 simbolių slapyvardį
3. **Pabandykite** specialius simbolius slapyvardžio lauke
4. **Įveskite** neigiamą balanso reikšmę

**Ką pastebėsite:**
- **Naršyklė rodo** vietinius tikrinimo pranešimus
- **Stilių pasikeitimai** priklausomai nuo `:valid` ir `:invalid` būsenų
- **Forma nepateikiama** kol visi tikrinimai nepraeina
- **Fokuso žymeklis automatiškai** pereina prie pirmo netinkamo lauko
### Kliento pusės ir serverio pusės tikrinimas
```mermaid
graph LR
A[Kliento pusės tikrinimas] --> B[Tiesioginis Atsakas]
A --> C[Geresnė Vartotojo Patirtis]
A --> D[Sumažinta Serverio Apkrova]
E[Serverio pusės tikrinimas] --> F[Sauga]
E --> G[Duomenų vientisumas]
E --> H[Verslo taisyklės]
A -.-> I[Abu Reikalingi]
E -.-> I
```
**Kodėl reikia abiejų sluoksnių:**
- **Kliento pusės tikrinimas**: suteikia greitą grįžtamąjį ryšį ir gerina vartotojo patirtį
- **Serverio pusės tikrinimas**: užtikrina saugumą ir apdoroja sudėtingas verslo taisykles
- **Kombinuotas metodas**: sukuria tvirtas, draugiškas ir saugias programas
- **Progresyvus tobulinimas**: veikia net kai JavaScript išjungtas
> 🛡️ **Saugumo priminimas**: Niekada netikėkite tik kliento pusės patikra! Kenksmingi vartotojai gali apeiti, todėl serverio pusės tikrinimas būtinas saugumui ir duomenų vientisumui.
### ⚡ **Ką galite padaryti per artimiausias 5 minutes**
- [ ] Išbandykite formą su neteisingais duomenimis ir pamatykite tikrinimo pranešimus
- [ ] Pabandykite pateikti formą su išjungtu JavaScript ir pamatykite HTML5 tikrinimą
- [ ] Atidarykite naršyklės DevTools ir patikrinkite siunčiamus formos duomenis
- [ ] Eksperimentuokite su skirtingais įvesties tipais ir stebėkite mobiliųjų klaviatūrų pokyčius
### 🎯 **Ką galite pasiekti per šią valandą**
- [ ] Užbaikite testą po pamokos ir supraskite formų tvarkymo sąvokas
- [ ] Įgyvendinkite išsamų tikrinimo iššūkį su realaus laiko atsiliepimu
- [ ] Pridėkite CSS stilių profesionalioms formoms
- [ ] Sukurkite klaidų tvarkymą dublikuojantiems vartotojo vardus ir serverio klaidas
- [ ] Pridėkite slaptažodžio patvirtinimo laukus su atitinkamu tikrinimu
### 📅 **Jūsų savaitės formų meistriškumo kelionė**
- [ ] Užbaikite visą bankinę programėlę su pažangiomis formų funkcijomis
- [ ] Įgyvendinkite failų įkėlimo galimybes profilio nuotraukoms ar dokumentams
- [ ] Pridėkite daugiapakopes formas su pažangos indikatoriais ir būsenos valdymu
- [ ] Sukurkite dinamiškas formas, kurios prisitaiko pagal vartotojo pasirinkimus
- [ ] Įgyvendinkite formų automatinio išsaugojimo ir atkūrimo funkcijas geresnei vartotojo patirčiai
- [ ] Pridėkite pažangų tikrinimą, pvz., el. pašto patvirtinimą bei telefono numerių formatavimą
### 🌟 **Jūsų mėnesio frontend kūrimo meistriškumas**
- [ ] Kurkite sudėtingas formų programas su sąlyginė logika ir darbo eiga
- [ ] Išmokite formų bibliotekas ir karkasus greitam kūrimui
- [ ] Įvaldykite prieinamumo gaires ir įtraukiantį dizainą
- [ ] Įgyvendinkite internacionalizaciją ir lokalizaciją pasaulinėms formoms
- [ ] Kurkite pakartotinai naudojamas formų komponentų bibliotekas ir dizaino sistemas
- [ ] Dalyvaukite atviro kodo formų projektuose ir dalinkitės geriausiomis praktikomis
## 🎯 Jūsų formų kūrimo meistriškumo laiko juosta
```mermaid
timeline
title Formos kūrimo ir naudotojo patirties mokymosi progresas
section HTML pagrindai (15 minučių)
Semantiniai formos elementai: Formos elementai
: Įvedimo tipai
: Žymos ir prieinamumas
: Progresyvus patobulinimas
section JavaScript integracija (25 minučių)
Įvykių valdymas: Formos pateikimas
: Duomenų rinkimas
: AJAX komunikacija
: Async/await modeliai
section Validavimo sistemos (35 minučių)
Daugiasluoksnė sauga: HTML5 validacija
: Kliento pusės logika
: Serverio pusės patikrinimas
: Klaidos valdymas
section Naudotojo patirtis (45 minučių)
Sąsajos patobulinimas: Įkrovimo būsenos
: Sėkmės pranešimai
: Klaidų atstatymas
: Prieinamumo funkcijos
section Pažangūs modeliai (1 savaitė)
Profesionalios formos: Dinaminis validavimas
: Daugiažingsniai procesai
: Failų įkėlimas
: Realiojo laiko atsiliepimai
section Įmonių įgūdžiai (1 mėnuo)
Produkcinės programos: Formų bibliotekos
: Testavimo strategijos
: Veikimo optimizavimas
: Geriausios saugumo praktikos
```
### 🛠️ Jūsų formų kūrimo įrankių rinkinys santrauka
Baigus šią pamoką, jūs įvaldėte:
- **HTML5 formos**: semantinė struktūra, įvesties tipai ir prieinamumo funkcijos
- **JavaScript formų tvarkymą**: įvykių valdymas, duomenų rinkimas ir AJAX komunikacija
- **Tikrinimo architektūrą**: kelių sluoksnių tikrinimas saugumui ir vartotojo patirčiai
- **Asinchroninį programavimą**: modernus fetch API ir async/await modeliai
- **Klaidų valdymą**: išsamus klaidų tvarkymas ir vartotojo atsiliepimai
- **Vartotojo patirties dizainą**: įkėlimo būsena, sėkmės pranešimai ir klaidų atkūrimas
- **Progresyvų tobulinimą**: formos, veikiančios visose naršyklėse ir galimybėse
**Realios pasaulio taikomosios sritys**: jūsų formų vystymo įgūdžiai tiesiogiai taikomi:
- **Elektroninės prekybos programoms**: užsakymų procesai, paskyrų registracija ir mokėjimų formos
- **Įmonių programinei įrangai**: duomenų įvedimo sistemos, ataskaitų sąsajos ir darbo eiga
- **Turinio valdymui**: leidybos platformos, vartotojų generuojamas turinys ir administravimo sąsajos
- **Finansinėms programoms**: bankininkystės sąsajos, investicijų platformos ir sandorių sistemos
- **Sveikatos priežiūros sistemoms**: pacientų portalai, susitikimų planavimas ir medicininių įrašų formos
- **Švietimo platformoms**: kursų registracija, vertinimo įrankiai ir mokymosi valdymas
**Įgyti profesiniai įgūdžiai**: dabar galite:
- **Kurti** prieinamas formas, veikiančias visiems vartotojams, įskaitant su negalia
- **Įgyvendinti** saugią formų tikrinimą, apsaugančią nuo duomenų korupcijos ir saugumo spragų
- **Kurkite** reaguojančias vartotojo sąsajas, teikiančias aiškią grįžtamąją informaciją ir nurodymus
- **Trikčių šalinimas** kompleksiškai formų sąveikai naudojant naršyklės kūrėjų įrankius ir tinklo analizę
- **Optimizuokite** formų veikimą efektyviu duomenų tvarkymu ir tikrinimo strategijomis
**Frontend kūrimo sąvokos įvaldytos**:
- **Įvykių varoma architektūra**: vartotojo sąveikos valdymas ir atsako sistemos
- **Asinchroninis programavimas**: neblokuojanti serverio komunikacija ir klaidų valdymas
- **Duomenų tikrinimas**: kliento ir serverio saugumo bei vientisumo patikrinimai
- **Vartotojo patirties dizainas**: intuityvios sąsajos, vedančios vartotojus į sėkmę
- **Prieinamumo inžinerija**: įtraukiantis dizainas, tinkantis įvairiems vartotojų poreikiams
**Kitas lygis**: esate pasirengęs tyrinėti pažangias formų bibliotekas, įgyvendinti sudėtingas tikrinimo taisykles ar kurti įmonių lygio duomenų rinkimo sistemas!
🌟 **Pasiekimas atrakintas**: sukūrėte pilną formų tvarkymo sistemą su profesionaliu tikrinimu, klaidų valdymu ir vartotojo patirties modeliais!
---
---
## GitHub Copilot Agent iššūkis 🚀
Naudokite Agent režimą šiam iššūkiui įgyvendinti:
**Aprašymas:** Patobulinkite registracijos formą išsamiu kliento pusės tikrinimu ir vartotojo atsiliepimais. Šis iššūkis padės jums praktikuotis formų tikrinimą, klaidų valdymą ir vartotojo patirties tobulinimą interaktyviu grįžtamuoju ryšiu.
**Promptas:** Sukurkite visišką registracijos formos patikrinimo sistemą, kuri apimtų: 1) Realaus laiko patikrinimo atsakymus kiekvienam laukui, kai vartotojas rašo, 2) Pasirinktines patikrinimo žinutes, kurios rodomos po kiekvienu įvesties lauku, 3) Slaptažodžio patvirtinimo lauką su atitikimo patikrinimu, 4) Vizualinius indikatorius (pvz., žalius varnelės ženklus teisingiems laukams ir raudonus įspėjimus neteisingiems), 5) Siuntimo mygtuką, kuris įgalinamas tik kai visi patikrinimai yra sėkmingi. Naudokite HTML5 patikrinimo atributus, CSS stilių patikrinimo būsenoms ir JavaScript interaktyviam elgesiui.
Daugiau apie [agent mode](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode) sužinokite čia.
## 🚀 Iššūkis
HTML faile parodykite klaidos žinutę, jei vartotojas jau egzistuoja.
Štai pavyzdys, kaip gali atrodyti galutinis prisijungimo puslapis po šiek tiek stiliaus taikymo:

## Po paskaitos quizas
[Po paskaitos quizas](https://ff-quizzes.netlify.app/web/quiz/44)
## Apžvalga ir savarankiškas mokymasis
Kūrėjai labai išradingai kuria savo formas, ypač dėl validacijos strategijų. Pažinkite skirtingas formų eigas naršydami per [CodePen](https://codepen.com); ar pavyks rasti įdomių ir įkvepiančių formų?
## Užduotis
[Stilizuokite savo banko programėlę](assignment.md)
---
**Atsakomybės apribojimas**:
Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors stengiamės užtikrinti tikslumą, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Pirminis dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojamas profesionalus žmogaus vertimas. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretavimą, kilusius dėl šio vertimo naudojimo.