# Izdelava bančne aplikacije, del 2: Izdelava prijavne in registracijske forme
```mermaid
journey
title Vaša razvojna pot obrazcev
section Osnove HTML
Razumeti elemente obrazcev: 3: Student
Naučiti se vrst vnosov: 4: Student
Obvladati dostopnost: 4: Student
section Integracija JavaScript
Ravnati s pošiljanjem obrazcev: 4: Student
Izvesti AJAX komunikacijo: 5: Student
Obdelati odzive strežnika: 5: Student
section Sistemi validacije
Ustvariti večplastno validacijo: 5: Student
Izboljšati uporabniško izkušnjo: 5: Student
Zagotoviti podatkovno integriteto: 5: Student
```
## Predpredavanje kviz
[Predpredavanje kviz](https://ff-quizzes.netlify.app/web/quiz/43)
Ste že kdaj izpolnili spletni obrazec in vam je ta zavrnil format e-pošte? Ali pa ste izgubili vse informacije, ko ste kliknili Pošlji? Vsi smo že naleteli na te frustrirajoče izkušnje.
Obrazci so most med vašimi uporabniki in funkcionalnostjo vaše aplikacije. Tako kot skrbni protokoli zračnih nadzornikov varno usmerjajo letala do njihovih destinacij, dobro zasnovani obrazci zagotavljajo jasne povratne informacije in preprečujejo drage napake. Slabi obrazci pa lahko uporabnike odvrnejo hitreje kot nesporazum na prometnem letališču.
V tej lekciji bomo vaš statični bančni aplikaciji dodali interaktivnost. Naučili se boste izdelati obrazce, ki preverjajo uporabniški vnos, komunicirajo s strežniki in nudijo koristne povratne informacije. Razmislite o tem kot o izdelavi kontrolnega vmesnika, ki omogoča uporabnikom navigacijo med funkcijami vaše aplikacije.
Na koncu boste imeli popoln sistem prijave in registracije z validacijo, ki uporabnike vodi k uspehu namesto do frustracij.
```mermaid
mindmap
root((Razvoj obrazcev))
HTML Osnova
Semantični elementi
Vrste vhodov
Dostopnost
Povezava oznak
Uporabniška izkušnja
Povratne informacije preverjanja
Preprečevanje napak
Stanja nalaganja
Sporočila o uspehu
Integracija JavaScripta
Obdelava dogodkov
AJAX komunikacija
Obdelava podatkov
Upravljanje napak
Plasti preverjanja
Preverjanje HTML5
Logika na strani odjemalca
Varnost na strani strežnika
Postopno izboljševanje
Moderni vzorci
Fetch API
Async/Await
Form Data API
Upravljanje obljub
```
## Predpogoji
Preden začnemo z izdelavo obrazcev, preverimo, da imate vse pravilno nastavljeno. Ta lekcija se nadaljuje tam, kjer smo končali v prejšnji, zato, če ste šli naprej, se boste morda želeli vrniti in najprej usposobiti osnove.
### Zahtevana nastavitev
| Komponenta | Status | Opis |
|-----------|--------|-------------|
| [HTML Predloge](../1-template-route/README.md) | ✅ Zahtevano | Osnovna struktura vaše bančne aplikacije |
| [Node.js](https://nodejs.org) | ✅ Zahtevano | JavaScript izvajanje na strežniku |
| [Bank API Strežnik](../api/README.md) | ✅ Zahtevano | Služba za shranjevanje podatkov v ozadju |
> 💡 **Nasvet za razvoj**: Hkrati boste poganjali dva ločena strežnika – enega za vašo front-end bančno aplikacijo in drugega za API v ozadju. Ta nastavitev odraža resnični razvoj, kjer front-end in back-end delujeta neodvisno.
### Konfiguracija strežnika
**Vaše razvojno okolje bo vključevalo:**
- **Front-end strežnik**: Streže vašo bančno aplikacijo (običajno port `3000`)
- **Back-end API strežnik**: Upravljanje shranjevanja in pridobivanja podatkov (port `5000`)
- **Oba strežnika** lahko tečeta istočasno brez konfliktov
**Testiranje povezave z API:**
```bash
curl http://localhost:5000/api
# Pričakovan odgovor: "Bank API v1.0.0"
```
**Če vidite odgovor z verzijo API-ja, ste pripravljeni za nadaljevanje!**
---
## Razumevanje HTML obrazcev in kontrol
HTML obrazci so način, kako uporabniki komunicirajo z vašo spletno aplikacijo. Razmislite o njih kot o telegrafskem sistemu, ki je v 19. stoletju povezoval oddaljena mesta – so komunikacijski protokol med uporabniško namero in odzivom aplikacije. Če so premišljeno zasnovani, ujamejo napake, vodijo pri oblikovanju vnosa in nudijo koristne predloge.
Sodobni obrazci so bistveno bolj sofisticirani kot osnovni tekstovni vnosi. HTML5 je uvedel specializirane tipe vnosov, ki samodejno obravnavajo preverjanje elektronske pošte, oblikovanje številk in izbiro datuma. Te izboljšave koristijo tako dostopnosti kot uporabniški izkušnji na mobilnih napravah.
### Osnovni elementi obrazca
**Gradniki, ki jih vsak obrazec potrebuje:**
```html
```
**Kaj ta koda počne:**
- **Ustvari** vsebnik obrazca z edinstvenim identifikatorjem
- **Določi** HTTP metodo za pošiljanje podatkov
- **Poveže** oznake z vnosi za dostopnost
- **Določi** gumb za pošiljanje obrazca
### Sodobni tipi vhodov in atributi
| Tip vnosa | Namen | Primer uporabe |
|------------|---------|---------------|
| `text` | Splošen vnos besedila | `` |
| `email` | Preverjanje elektronske pošte | `` |
| `password` | Skrit vnos besedila | `` |
| `number` | Številčni vnos | `` |
| `tel` | Telefonske številke | `` |
> 💡 **Prednost sodobnega HTML5**: Uporaba specifičnih tipov vnosa zagotavlja avtomatsko validacijo, primerne mobilne tipkovnice in boljšo podporo dostopnosti brez dodatnega JavaScripta!
### Tipi in vedenja gumbov
```html
```
**Kaj počne vsak tip gumba:**
- **Gumbi za pošiljanje (submit)**: Sprožijo oddajo obrazca in pošljejo podatke na določen naslov
- **Gumbi za ponastavitev (reset)**: Ponastavijo vsa polja obrazca na začetno stanje
- **Navadni gumbi (button)**: Nimajo privzetega vedenja, potrebujejo lastno JavaScript funkcionalnost
> ⚠️ **Pomembna opomba**: `` element je samozapiralni in ne potrebuje zaključnega taga. Sodobna praksa je napisati `` brez poševnice.
### Izdelava prijavne forme
Zdaj ustvarimo praktično prijavno formo, ki prikazuje sodobne prakse HTML obrazcev. Začeli bomo s preprosto strukturo in postopoma nadgrajevali z dostopnostjo ter validacijo.
```html
Bank App
Login
```
**Kaj se tukaj dogaja:**
- **Strukturira** formo z semantičnimi elementi HTML5
- **Skupina** sorodnih elementov z `div` vsebniki in smiselno razrednimi oznakami
- **Poveže** oznake z vnosi prek atributov `for` in `id`
- **Vključi** sodobne atribute, kot sta `autocomplete` in `placeholder` za boljšo UX
- **Doda** `novalidate` za upravljanje validacije z JavaScriptom namesto privzetih brskalniških
### Moč pravilnih oznak (label)
**Zakaj so oznake pomembne za sodoben spletni razvoj:**
```mermaid
graph TD
A[Oznaka elementa] --> B[Podpora bralniku zaslona]
A --> C[Razširitev cilja klika]
A --> D[Preverjanje obrazca]
A --> E[Prednosti SEO]
B --> F[Dostopno vsem uporabnikom]
C --> G[Izboljšana mobilna izkušnja]
D --> H[Jasna sporočila o napakah]
E --> I[Izboljšan uvrstitev iskanja]
```
**Kaj pravilne oznake omogočajo:**
- **Omogočajo** bralnikom zaslona jasen napoved obrazčnih polj
- **Razširijo** klikljivo območje (klik na oznako fokusira vhod)
- **Izboljšajo** mobilno uporabnost z večjimi cilji za dotik
- **Podpirajo** validacijo z obrazcem z uporabnimi sporočili o napaki
- **Izboljšajo** SEO, ker dajejo semantičen pomen elementom obrazca
> 🎯 **Cilj dostopnosti**: Vsakemu polju v obrazcu mora biti priložena ustrezna oznaka. Ta preprosta praksa omogoča uporabo obrazcev vsem, tudi uporabnikom z omejitvami, in izboljša izkušnjo za vse.
### Izdelava registracijske forme
Registracijski obrazec zahteva bolj podrobne podatke za ustvarjanje popolnega uporabniškega računa. Naredimo ga z uporabo modernih funkcij HTML5 in izboljšane dostopnosti.
```html
Register
```
**V zgornjem smo:**
- **Organizirali** vsako polje v vsebnike `div` za boljšo obliko in postavitev
- **Dodali** primerne atribute `autocomplete` za podporo samodokončanju v brskalniku
- **Vključili** koristno pomocno tekstovno vsebino (`placeholder`), ki vodi uporabnika
- **Nastavili** razumne privzete vrednosti s pomočjo atributa `value`
- **Uporabljali** atribute za validacijo, kot so `required`, `maxlength` in `min`
- **Uporabljali** tip `number` za polje za stanje s podporo decimalnim številkam
### Raziščimo tipe vhodov in vedenja
**Sodobni tipi vhodov nudijo izboljšano funkcionalnost:**
| Funkcija | Prednost | Primer |
|---------|---------|----------|
| `type="number"` | Numerična tipkovnica na mobilnem | Lažji vnos stanja |
| `step="0.01"` | Nadzor decimalne natančnosti | Dovoljuje cente v valuti |
| `autocomplete` | Samodokončanje brskalnika | Hitrejše izpolnjevanje obrazca |
| `placeholder` | Kontekstualni namigi | Usmerjanje pričakovanj uporabnika |
> 🎯 **Izziv za dostopnost**: Poskusite krmariti po obrazcu samo z uporabo tipkovnice! Uporabite `Tab` za premikanje med polji, `Space` za izbiro potrditvenih polj in `Enter` za oddajo. To vam pomaga razumeti, kako uporabniki bralnikov zaslona komunicirajo z obrazci.
### 🔄 **Pedagoška preveritev**
**Razumevanje osnov obrazcev**: Preden začnete z JavaScriptom, se prepričajte:
- ✅ Kako semantični HTML ustvarja dostopne strukture obrazcev
- ✅ Zakaj so tipi vhodov pomembni za mobilne tipkovnice in validacijo
- ✅ Razmerje med oznakami in kontrolami obrazca
- ✅ Kako atributi obrazca vplivajo na privzeto vedenje brskalnika
**Hiter samopreizkus**: Kaj se zgodi, če oddate obrazec brez JavaScript upravljanja?
*Odgovor: Brskalnik izvede privzeto oddajo, ponavadi preusmeri na URL iz atributa action*
**Prednosti HTML5 obrazcev**: Sodobni obrazci nudijo:
- **Vgrajeno validacijo**: Samodejno preverjanje e-pošte in številk
- **Mobilno optimizacijo**: Pravilne tipkovnice za različne tipe vnosov
- **Dostopnost**: Podporo bralnikov zaslona in navigacijo s tipkovnico
- **Postopen razvoj**: Deluje tudi, če je JavaScript onemogočen
## Razumevanje metod za oddajo obrazca
Ko nekdo izpolni vaš obrazec in klikne pošlji, morajo ti podatki nekam priti – ponavadi na strežnik, ki jih lahko shrani. Obstajata dva osnovna načina, kako se to lahko zgodi, in vedeti, kateri uporabiti, vas lahko kasneje reši glavobolov.
Poglejmo, kaj se dejansko zgodi, ko nekdo klikne gumb za pošiljanje.
### Privzeto vedenje obrazca
Najprej opazimo, kaj se zgodi pri osnovni oddaji obrazca:
**Preizkusite vaše trenutne obrazce:**
1. Kliknite gumb *Registriraj* v obrazcu
2. Opazujte spremembe v naslovni vrstici brskalnika
3. Ugotovite, kako se stran osveži in podatki pokažejo v URL-ju

### Primerjava HTTP metod
```mermaid
graph TD
A[Oddaja obrazca] --> B{HTTP metoda}
B -->|GET| C[Podatki v URL-ju]
B -->|POST| D[Podatki v telesu zahteve]
C --> E[Viden v naslovni vrstici]
C --> F[Omejena velikost podatkov]
C --> G[Možno zaznamek]
D --> H[Skrito iz URL-ja]
D --> I[Velika zmogljivost podatkov]
D --> J[Varnostnejše]
```
**Razumevanje razlik:**
| Metoda | Uporaba | Lokacija podatkov | Stopnja varnosti | Omejitev velikosti |
|--------|----------|---------------|----------------|-------------|
| `GET` | Iskalna povpraševanja, filtri | Parametri v URL-ju | Nizka (vidno) | ~2000 znakov |
| `POST` | Uporabniški računi, občutljivi podatki | Vsebina zahteve (body) | Višja (skrito) | Brez praktične omejitve |
**Razumevanje osnovnih razlik:**
- **GET**: Dodaja podatke iz obrazca v URL kot poizvedbene parametre (primeren za iskalne operacije)
- **POST**: Vključuje podatke v telo zahteve (nujno za občutljive informacije)
- **Omejitve GET**: Omejitve velikosti, vidni podatki, trajna zgodovina brskalnika
- **Prednosti POST**: Velika kapaciteta podatkov, zaščita zasebnosti, podpora za nalaganje datotek
> 💡 **Najboljša praksa**: Za iskalne obrazce in filtre uporabite `GET` (pridobivanje podatkov), za registracijo uporabnikov, prijavo in ustvarjanje podatkov uporabite `POST`.
### Konfiguracija oddaje obrazca
Nastavimo vaš registracijski obrazec, da komunicira pravilno z backend API z uporabo metode POST:
```html
```
**Razumevanje izboljšane validacije:**
- **Združuje** indikatorje obveznih polj s koristnimi opisi
- **Vključuje** `pattern` atribute za validacijo formata
- **Nudi** `title` atribute za dostopnost in namige
- **Dodaja** pomožne besedilne nasvete za usmerjanje vnosa
- **Uporablja** semantično HTML strukturo za boljšo dostopnost
### Napredna pravila validacije
**Kaj posamezno pravilo validacije omogoča:**
| Polje | Pravila validacije | Korist za uporabnika |
|-------|--------------------|---------------------|
| Uporabniško ime | `required`, `minlength="3"`, `maxlength="20"`, `pattern="[a-zA-Z0-9_]+"` | Zagotavlja veljavne, edinstvene identifikatorje |
| Valuta | `required`, `maxlength="3"`, `pattern="[A-Z$€£¥₹]+"` | Sprejema običajne valutne simbole |
| Stanje računa | `min="0"`, `step="0.01"`, `type="number"` | Preprečuje negativna stanja |
| Opis | `maxlength="100"` | Razumno omejuje dolžino |
### Testiranje vedenja validacije
**Preizkusite te scenarije validacije:**
1. **Oddajte** obrazec z praznimi obveznimi polji
2. **Vnesite** uporabniško ime krajše od 3 znakov
3. **Poskusite** posebne znake v polju za uporabniško ime
4. **Vnesite** negativno stanje računa

**Kaj boste opazili:**
- **Brskalnik prikaže** izvorna validacijska sporočila
- **Stilizacija se spremeni** glede na stanja `:valid` in `:invalid`
- **Oddaja obrazca** je preprečena, dokler vse validacije ne uspejo
- **Fokus se samodejno premakne** na prvo neveljavno polje
### Validacija na strani odjemalca in strežnika
```mermaid
graph LR
A[Preverjanje na strani odjemalca] --> B[Trenutne povratne informacije]
A --> C[Boljša uporabniška izkušnja]
A --> D[Zmanjšana obremenitev strežnika]
E[Preverjanje na strani strežnika] --> F[Varnost]
E --> G[Celovitost podatkov]
E --> H[Poslovna pravila]
A -.-> I[Oboje potrebno]
E -.-> I
```
**Zakaj potrebujete obe plasti:**
- **Validacija na strani odjemalca**: zagotavlja takojšno povratno informacijo in forbedi uporabniško izkušnjo
- **Validacija na strani strežnika**: zagotavlja varnost in obravnava kompleksna poslovna pravila
- **Združen pristop**: ustvarja robustne, uporabniku prijazne in varne aplikacije
- **Postopna izboljšava**: deluje tudi, če je JavaScript onemogočen
> 🛡️ **Varnostna opomba**: Nikoli ne zaupajte samo validaciji na strani odjemalca! Zlonamerni uporabniki lahko zaobidejo preverjanja na odjemalcu, zato je validacija na strežniku ključna za varnost in integriteto podatkov.
### ⚡ **Kaj lahko naredite v naslednjih 5 minutah**
- [ ] Preizkusite obrazec z neveljavnimi podatki, da vidite sporočila validacije
- [ ] Poskusite oddati obrazec z onemogočenim JavaScriptom in preverite HTML5 validacijo
- [ ] Odprite razvojna orodja brskalnika in preglejte podatke obrazca, ki se pošiljajo strežniku
- [ ] Preizkusite različne tipe vnosa in opazujte spremembe tipkovnic na mobilnih napravah
### 🎯 **Kaj lahko dosežete v tem trenutku**
- [ ] Dokončajte kviz po lekciji in razumite koncepte obdelave obrazca
- [ ] Izvedite izziv celovite validacije z realnočasovno povratno informacijo
- [ ] Dodajte CSS oblikovanje za profesionalen izgled obrazcev
- [ ] Ustvarite ravnanje z napakami za podvojena uporabniška imena in strežniške napake
- [ ] Dodajte polja za potrditev gesla z veljavnostno usklajenostjo
### 📅 **Vaša tedenska pot do mojstrstva obrazcev**
- [ ] Dokončajte celotno bančno aplikacijo z naprednimi oblikami
- [ ] Izvedite možnosti nalaganja datotek za fotografije profila ali dokumente
- [ ] Dodajte večstopenjske obrazce s kazalci napredka in upravljanjem stanja
- [ ] Ustvarite dinamične obrazce, ki se prilagajajo uporabnikovim izbiram
- [ ] Izvedite samodejno shranjevanje in obnovitev obrazcev za boljšo uporabniško izkušnjo
- [ ] Dodajte napredno validacijo, kot je preverjanje e-pošte in oblikovanje telefonskih številk
### 🌟 **Vaš mesečni napredek v razvoju frontend**
- [ ] Zgradite kompleksne obrazčne aplikacije s pogojno logiko in poteki dela
- [ ] Spoznajte knjižnice in ogrodja obrazcev za hitro razvijanje
- [ ] Obvladujte smernice dostopnosti in principe vključujočega oblikovanja
- [ ] Uvedite internacionalizacijo in lokalizacijo za globalne obrazce
- [ ] Ustvarite ponovne knjižnice komponent obrazcev in dizajnerske sisteme
- [ ] Prispevajte k odprtokodnim projektom obrazcev in delite dobre prakse
## 🎯 Časovnica vašega mojstrstva razvoja obrazcev
```mermaid
timeline
title Razvoj oblik in napredovanje učenja uporabniške izkušnje
section Osnova HTML (15 minut)
Semantični obrazci: Elementi obrazcev
: Vrste vhodov
: Nalepke in dostopnost
: Postopno izboljševanje
section Integracija JavaScript (25 minut)
Obdelava dogodkov: Pošiljanje obrazcev
: Zbiranje podatkov
: AJAX komunikacija
: Async/await vzorci
section Sistemi validacije (35 minut)
Večplastna varnost: Validacija HTML5
: Logika na strani odjemalca
: Preverjanje na strani strežnika
: Ravnanje z napakami
section Uporabniška izkušnja (45 minut)
Izboljšava vmesnika: Stanja nalaganja
: Sporočila o uspehu
: Obnavljanje napak
: Funkcije dostopnosti
section Napredni vzorci (1 teden)
Profesionalni obrazci: Dinamična validacija
: Večstopenjski delovni procesi
: Naloži datoteke
: Povratne informacije v realnem času
section Podjetniške veščine (1 mesec)
Produkcijske aplikacije: Knjižnice obrazcev
: Strategije testiranja
: Optimizacija zmogljivosti
: Najboljše varnostne prakse
```
### 🛠️ Povzetek vašega orodja za razvoj obrazcev
Po zaključku te lekcije ste osvojili:
- **HTML5 Obrazce**: Semantično strukturo, tipe vhodov in značilnosti dostopnosti
- **Obdelavo obrazcev v JavaScriptu**: Upravljanje dogodkov, zbiranje podatkov in AJAX komunikacijo
- **Arhitekturo validacije**: Večplastna validacija za varnost in uporabniško izkušnjo
- **Asinhrono programiranje**: Sodobni fetch API in vzorci async/await
- **Upravljanje napak**: Celovito ravnanje z napakami in sisteme povratnih informacij uporabniku
- **Oblikovanje uporabniške izkušnje**: Stanja nalaganja, sporočila o uspehu in okrevanje pri napakah
- **Postopno izboljševanje**: Obrazci delujejo v vseh brskalnikih in zmogljivostih
**Uporabnost v resničnem svetu**: Vaše veščine razvoja obrazcev se neposredno uporabljajo v:
- **E-trgovini**: Postopki odjave, registracije in plačilni obrazci
- **Podjetniški programski opremi**: Sistemi za vnos podatkov, vmesniki za poročanje in aplikacije delovnih tokov
- **Upravljanju vsebin**: Platforme za objavljanje, vsebine, ustvarjene z uporabniki, in upravne vmesnike
- **Finančnih aplikacijah**: Bančniški vmesniki, investicijske platforme in sistemi transakcij
- **Zdravstvenih sistemih**: Portali pacientov, načrtovanje terminov in obrazci medicinskih kartotek
- **Izobraževalnih platformah**: Registracija tečajev, orodja za ocenjevanje in sistemi upravljanja učenja
**Profesionalne pridobljene veščine**: Zdaj znate:
- **Oblikovati** dostopne obrazce, ki delujejo za vse uporabnike, tudi z invalidnostmi
- **Izvajati** varno validacijo obrazcev, ki preprečuje poškodbe podatkov in varnostne ranljivosti
- **Ustvarjati** odzivne uporabniške vmesnike z jasnimi povratnimi informacijami in usmerjanjem
- **Razhroščevati** kompleksne interakcije obrazcev z uporabo orodij za razvijalce brskalnika in omrežne analize
- **Optimizirati** zmogljivost obrazcev s učinkovitim ravnanjem s podatki in strategijami validacije
**Obvladani koncepti frontend razvoja**:
- **Arhitektura, ki temelji na dogodkih**: Upravljanje uporabniških interakcij in sistemov odziva
- **Asinhrono programiranje**: Neblokirna strežniška komunikacija in ravnanje z napakami
- **Validacija podatkov**: Varnostni in integritativni pregledi na odjemalcu in strežniku
- **Oblikovanje uporabniške izkušnje**: Intuitivni vmesniki, ki usmerjajo uporabnike k uspehu
- **Inženiring dostopnosti**: Vključujoče oblikovanje, ki deluje za raznolike potrebe uporabnikov
**Naslednja raven**: Pripravljeni ste raziskovati napredne knjižnice obrazcev, uvesti kompleksna pravila validacije ali zgraditi podatkovne zbiralne sisteme za podjetja!
🌟 **Dosežek odklenjen**: Zgradili ste popoln sistem za obdelavo obrazcev s profesionalno validacijo, ravnanjem z napakami in vzorci uporabniške izkušnje!
---
---
## Izziv agenta GitHub Copilot 🚀
Uporabite način Agent za dokončanje naslednjega izziva:
**Opis:** Izboljšajte registracijski obrazec z celovito validacijo na strani odjemalca in povratnimi informacijami uporabniku. Ta izziv vam bo pomagal vaditi validacijo obrazcev, ravnanje z napakami in izboljšanje uporabniške izkušnje z interaktivnimi povratnimi informacijami.
**Poziv:** Ustvarite popoln sistem za preverjanje obrazca za registracijo, ki vključuje: 1) Povratne informacije o preverjanju v realnem času za vsako polje, ko uporabnik tipka, 2) Uporabniška sporočila o preverjanju, ki se prikažejo pod vsakim poljem za vnos, 3) Polje za potrditev gesla s preverjanjem ujemanja, 4) Vizualne indikatorje (kot so zeleni kljukci za veljavna polja in rdeča opozorila za neveljavna), 5) Gumb za oddajo, ki je omogočen samo, če so vse preveritve uspešne. Uporabite HTML5 atribute za preverjanje, CSS za oblikovanje stanj preverjanja in JavaScript za interaktivno vedenje.
Več o [agent mode](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode) izveste tukaj.
## 🚀 Izziv
V HTML prikažite sporočilo o napaki, če uporabnik že obstaja.
Tukaj je primer, kako lahko končna prijavna stran izgleda po dodani nekaj oblikovalskih spremembah:

## Kvize po predavanju
[Post-lecture quiz](https://ff-quizzes.netlify.app/web/quiz/44)
## Pregled in samostojno učenje
Razvijalci so zelo ustvarjalni pri gradnji obrazcev, zlasti glede strategij preverjanja. Spoznajte različne pristope k obrazcem tako, da pregledate [CodePen](https://codepen.com); lahko najdete nekaj zanimivih in navdihujočih obrazcev?
## Naloga
[Style your bank app](assignment.md)
---
**Izjava o omejitvi odgovornosti**:
Ta dokument je bil preveden z uporabo storitve za avtomatski prevod AI [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas opozarjamo, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvorno jeziku velja za avtoritativni vir. Za ključne informacije priporočamo strokovni prevod, opravljen s strani človeka. Za kakršnekoli nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda, ne odgovarjamo.