# Jenga Programu ya Benki Sehemu ya 2: Jenga Fomu ya Kuingia na Usajili
```mermaid
journey
title Safari Yako ya Maendeleo ya Fomu
section Msingi wa HTML
Elewa vipengele vya fomu: 3: Student
Jifunze aina za pembejeo: 4: Student
Shinda upatikanaji: 4: Student
section Muunganiko wa JavaScript
Shughulikia uwasilishaji wa fomu: 4: Student
Tekelezea mawasiliano ya AJAX: 5: Student
Chakata majibu ya seva: 5: Student
section Mifumo ya Uhakiki
Unda uthibitishaji wa tabaka nyingi: 5: Student
Boresha uzoefu wa mtumiaji: 5: Student
Hakikisha usahihi wa data: 5: Student
```
## Mtihani wa Kabla ya Mhadhara
[Mtihani wa kabla ya mhadhara](https://ff-quizzes.netlify.app/web/quiz/43)
Umewahi kujaza fomu mtandaoni na ikakataa muundo wa barua pepe yako? Au kupoteza taarifa zote baada ya kubofya tuma? Sote tumewahi kukumbana na uzoefu huu wa kuchosha.
Fomu ni daraja kati ya watumiaji wako na kazi za programu yako. Kama vile kanuni za makini ambazo wakurugenzi wa usafiri wa anga hutumia kuwaongoza ndege kwa usalama kwenye maeneo yao, fomu zilizobuniwa vyema hutoa mrejesho wazi na kuzuia makosa ambayo huleta gharama kubwa. Kwa upande mwingine, fomu mbovu zinaweza kuwakatisha tamaa watumiaji zaidi kuliko mawasiliano mabaya katika uwanja wa ndege uliojaa shughuli.
Kifundishio hiki, tutageuza programu yako ya benki isiyobadilika kuwa programu inayohusiana. Utajifunza jinsi ya kujenga fomu zinazothibitisha ingizo la mtumiaji, kuwasiliana na seva, na kutoa mrejesho mzuri. Fikiria kama unajenga kiolesura cha udhibiti kinachoruhusu watumiaji kuvinjari vipengele vya programu yako.
Mwisho wa somo hili, utakuwa na mfumo kamili wa kuingia na usajili na uthibitishaji unaowaelekeza watumiaji kufanikisha badala ya kukata tamaa.
```mermaid
mindmap
root((Maendeleo ya Fomu))
HTML Foundation
Vipengele vya Semantiki
Aina za Ingizo
Ufikikaji
Uhusiano wa Lebo
User Experience
Maoni ya Uthibitisho
Kuzuia Makosa
Hali za Kupakia
Ujumbe wa Mafanikio
JavaScript Integration
Usimamizi wa Matukio
Mawasiliano ya AJAX
Usindikaji wa Data
Usimamizi wa Makosa
Validation Layers
Uthibitisho wa HTML5
Mantiki upande wa Mteja
Usalama upande wa Seva
Uboreshaji wa Maendeleo
Modern Patterns
Fetch API
Async/Await
Form Data API
Promise Handling
```
## Mahitaji ya Awali
Kabla hatujaanza kujenga fomu, hakikisha umejipanga vyema. Somo hili linaanzia mahali tulipopumzika kipindi kilichopita, hivyo kama ulipita mbele, unaweza kurudi na kuweka mambo msingi vizuri kwanza.
### Muundo Unaohitajika
| Kipengele | Hali | Maelezo |
|-----------|--------|-------------|
| [HTML Templates](../1-template-route/README.md) | β Inahitajika | Muundo msingi wa programu yako ya benki |
| [Node.js](https://nodejs.org) | β Inahitajika | Muda wa utekelezaji wa JavaScript kwa seva |
| [Bank API Server](../api/README.md) | β Inahitajika | Huduma ya nyuma kwa hifadhi ya data |
> π‘ **Ushauri wa Maendeleo**: Utaendesha seva mbili tofauti kwa wakati mmoja β moja kwa programu yako ya mbele ya benki na nyingine kwa API ya nyuma. Mpangilio huu unafanana na maendeleo halisi ambapo huduma za mbele na nyuma zinafanya kazi kwa kujitegemea.
### Usanidi wa Seva
**Mazingira yako ya maendeleo yatajumuisha:**
- **Seva ya mbele**: Huendesha programu yako ya benki (kawaida kwenye mlangoni `3000`)
- **Seva ya API ya nyuma**: Inashughulikia uhifadhi na urejeshaji wa data (mlango `5000`)
- **Seva zote mbili** zinaweza kuendesha kwa wakati mmoja bila migongano
**Kujaribu muunganisho wa API yako:**
```bash
curl http://localhost:5000/api
# Jibu lililotegemewa: "Banki API v1.0.0"
```
**Ukiona majibu ya toleo la API, uko tayari kwenda mbele!**
---
## Kuelewa Fomu za HTML na Vidirisha vya Kudhibiti
Fomu za HTML ndizo njia ambazo watumiaji huwasiliana na programu yako ya wavuti. Fikiria kama mfumo wa telegrafu uliounganisha maeneo ya mbali katika karne ya 19 β ni itifaki ya mawasiliano kati ya nia ya mtumiaji na jibu la programu. Zikiwa zimebuniwa kwa busara, huchukua makosa, kuelekeza upangaji wa ingizo, na kutoa mapendekezo mazuri.
Fomu za kisasa ziko juu sana kuliko maingizo ya maandishi ya msingi. HTML5 ilileta aina maalum za maingizo zinazoshughulikia uthibitishaji wa barua pepe, upangaji wa nambari, na uteuzi wa tarehe kiotomatiki. Maboresho haya yanaboresha upatikanaji na uzoefu wa mtumiaji wa simu.
### Vipengele Muhimu vya Fomu
**Vipengele vya msingi fomu inavyohitaji:**
```html
```
**Hii ni jinsi msimbo huu unavyofanya kazi:**
- **Huunda** chombo cha fomu chenye kitambulisho cha kipekee
- **Huanika** mbinu ya HTTP kwa ajili ya kuwasilisha data
- **Huhusisha** lebo na maingizo kwa upatikanaji
- **Hufafanua** kitufe cha tuma ili kushughulikia fomu
### Aina Za Kisasa za Ingizo na Sifa Zake
| Aina ya Ingizo | Kusudi | Mfano wa Matumizi |
|------------|---------|---------------|
| `text` | Ingizo la maandishi kwa ujumla | `` |
| `email` | Uthibitishaji wa barua pepe | `` |
| `password` | Ingizo la maandishi yaliyofichwa | `` |
| `number` | Ingizo la nambari | `` |
| `tel` | Nambari za simu | `` |
> π‘ **Faida ya HTML5 ya Kisasa**: Kutumia aina maalum za ingizo hutoa uthibitishaji wa moja kwa moja, kinjo sahihi za kibodi za simu, na usaidizi bora wa upatikanaji bila JavaScript zaidi!
### Aina za Vitufe na Tabia Zake
```html
```
**Hii ni kazi ya kila aina ya kitufe:**
- **Vitufe vya tuma**: Husababisha kuwasilisha fomu na kutuma data kwa nukta iliyotajwa
- **Vitufe vya mpaka upya**: Hurejesha sehemu zote za fomu kama zilivyokuwa mwanzo
- **Vitufe vya kawaida**: Havutoa tabia yoyote ya kawaida, yanahitaji JavaScript maalum kwa utendakazi
> β οΈ **Kumbuka Muhimu**: Kielemeni `` ni kiunganishi kamili na hakihitaji alama ya kufunga. Mazoezi bora ya kisasa ni kuandika `` bila mstari wa mbele (/).
### Kujenga Fomu Yako ya Kuingia
Sasa tuanze kuunda fomu ya kuingia inayoonyesha mbinu za kisasa za HTML. Tutaanza na muundo wa msingi na kuiboresha polepole kwa sifa za upatikanaji na uthibitishaji.
```html
Bank App
Login
```
**Yafanyike hapa:**
- **Huunda** fomu kwa kutumia vipengele vya kipekee vya HTML5
- **Huunganisha** vipengele vinavyohusiana kwa kutumia vyombo vya `div` vyenye darasa lenye maana
- **Huunganisha** lebo na maingizo kwa kutumia sifa za `for` na `id`
- **Hujumuisha** sifa za kisasa kama `autocomplete` na `placeholder` kwa uzoefu mzuri
- **Huongeza** `novalidate` kusimamia uthibitishaji kwa JavaScript badala ya kivinjari
### Nguvu ya Lebo Zinazofaa
**Kwa nini lebo ni muhimu kwa maendeleo ya wavuti ya kisasa:**
```mermaid
graph TD
A[Lebo Kipengele] --> B[Ufadhili Msikilizaji wa Skrini]
A --> C[Upanuzi wa Lengo la Bonyeza]
A --> D[Uthibitishaji wa Fomu]
A --> E[Manufaa ya SEO]
B --> F[Inapatikana kwa watumiaji wote]
C --> G[Uzoefu bora wa simu]
D --> H[Ujumbe wa kosa ulio wazi]
E --> I[Kiwango bora cha utafutaji]
```
**LebΕ nzuri hufanikisha:**
- **Kuwezesha** wasikilizaji wa skrini kutangaza sehemu za fomu kwa uwazi
- **Kupanua** eneo la kubofya (kubofya lebo huangazia ingizo)
- **Kuboresha** matumizi ya simu kwa lengo kubwa la kugusa
- **Kusaidia** uthibitishaji wa fomu kwa ujumbe wa makosa yenye maana
- **Kuongeza** SEO kwa kutoa maana ya kisarufi kwa vipengele vya fomu
> π― **Lengo la Upatikanaji**: Kila sehemu ya fomu inapaswa kuwa na lebo inayohusiana. Mazoezi haya rahisi hufanya fomu zako zipatikane kwa kila mtu, wakiwemo wenye ulemavu, na kuboresha uzoefu kwa watumiaji wote.
### Kuunda Fomu ya Usajili
Fomu ya usajili inahitaji taarifa zaidi za undani kwa kuunda akaunti kamili ya mtumiaji. Tujenge kwa kutumia vipengele vya kisasa vya HTML5 na upatikanaji ulioimarishwa.
```html
Register
```
**Hapo juu, tumefanya:**
- **Kupanga** kila uwanja kwenye vyombo vya div kwa muundo na mitindo bora
- **Kuongeza** sifa sahihi za `autocomplete` kwa msaada wa kujaza kiatomati kivinjari
- **Kujumuisha** maandishi ya nafasi yanayosaidia kuelekeza ingizo la mtumiaji
- **Kuweka** thamani za msingi zinazofaa kwa sifa ya `value`
- **Kutumia** sifa za uthibitishaji kama `required`, `maxlength`, na `min`
- **Kutumia** `type="number"` kwa uwanja wa salio ukiwa na msaada wa decimal
### Kuchunguza Aina za Ingizo na Tabia
**Aina za kisasa za ingizo hutolewa kwa utendaji ulioimarishwa:**
| Kipengele | Faida | Mfano |
|---------|---------|----------|
| `type="number"` | Kinjo cha nambari kwa simu | Rahisi kuingiza salio |
| `step="0.01"` | Udhibiti wa wingi wa desimali | Huruhusu sent kwenye sarafu |
| `autocomplete` | Kujaza kiotomati kivinjari | Kuongeza kasi ya kujaza fomu |
| `placeholder` | Vidokezo vya muktadha | Kuelekeza matarajio ya mtumiaji |
> π― **Changamoto ya Upatikanaji**: Jaribu kuvinjari fomu kwa kutumia kibodi tu! Tumia `Tab` kuhamia sehemu, `Space` kuwasha visanduku, na `Enter` kutuma. Uzoefu huu utakusaidia kuelewa jinsi watumiaji wa wasikilizaji wa skrini wanavyohusiana na fomu zako.
### π **Angalia Mafanikio ya Mafunzo**
**Uelewa wa Misingi ya Fomu**: Kabla ya kutumia JavaScript, hakikisha unaelewa:
- β Jinsi HTML za kisarufi zinavyounda miundo ya fomu inayopatikana
- β Kwa nini aina za ingizo zina umuhimu kwa kinjo cha kibodi cha simu na uthibitishaji
- β Uhusiano kati ya lebo na vidhibiti vya fomu
- β Jinsi sifa za fomu zinavyoathiri tabia za kivinjari chaguomsingi
**Jaribio la Haraka**: Nini hutokea ukaweka fomu bila JavaScript?
*Jibu: Kivinjari huchukua hatua za kawaida za kuwasilisha, mara nyingi kurudisha kwenye URL ya hatua*
**Faida za Fomu za HTML5**: Fomu za kisasa hutoa:
- **Uthibitishaji wa kujengwa ndani**: Kuthibitisha barua pepe na muundo wa nambari kiotomatiki
- **Marekebisho kwa simu**: Kinjo sahihi cha kibodi kwa aina tofauti za maingizo
- **Upatikanaji**: Usaidizi wa wasikilizaji wa skrini na kuvinjari kwa kibodi
- **Kuboresha hatua kwa hatua**: Hufanya kazi hata JavaScript ikizimwa
## Kuelewa Mbinu za Kuwasilisha Fomu
Mtu akijaza fomu yako na kubofya tuma, data inapaswa kwenda mahali fulani β kawaida seva inayoweza kuihifadhi. Kuna njia kadhaa tofauti za kufanya hivyo, na kujua ipi inafaa kuepuka usumbufu baadaye.
Tuchunguze kinachotokea tu mtu anapobofya kitufe cha tuma.
### Tabia ya Kawaida ya Fomu
Kwanza, tazama kinachotokea kwa uwasilishaji wa fomu wa kawaida:
**Jaribu fomu zako sasa hivi:**
1. Bofya kitufe cha *Register* kwenye fomu yako
2. Angalia mabadiliko kwenye upau wa anwani wa kivinjari chako
3. Angalia jinsi ukurasa unavyojazwa upya na data kuonekana kwenye URL

### Mlinganisho wa Mbinu za HTTP
```mermaid
graph TD
A[Uwasilishaji wa Fomu] --> B{Njia ya HTTP}
B -->|GET| C[Taarifa kwenye URL]
B -->|POST| D[Taarifa kwenye Mwili wa Ombi]
C --> E[Inaonekana kwenye upau wa anwani]
C --> F[Kiasi kidogo cha data]
C --> G[Inaweza kuwekwa alama]
D --> H[Imetoweka kutoka kwenye URL]
D --> I[Kapaasi kubwa ya data]
D --> J[Salama zaidi]
```
**Kuelewa tofauti:**
| Mbinu | Matumizi | Mahali pa Data | Ngazi ya Usalama | Kiwango cha Ukubwa |
|--------|----------|---------------|----------------|-------------|
| `GET` | Maswali ya utafutaji, vichujio | Vigezo kwenye URL | Chini (inaonekana) | ~herufi 2000 |
| `POST` | Akaunti za watumiaji, data nyeti | Mwili wa ombi | Juu (hazionekani) | Hakuna kikomo cha vitendo |
**Kuelewa tofauti msingi:**
- **GET**: Huongeza data ya fomu kwenye URL kama vigezo vya utafutaji (inafaa kwa utafutaji)
- **POST**: Huingiza data mwilini mwa ombi (muhimu kwa taarifa nyeti)
- **Vizingiti vya GET**: Ukubwa mdogo, data inayoonekana, historia ya kivinjari
- **Faida za POST**: Uwezo mkubwa wa data, ulinzi wa faragha, msaada wa kupakia faili
> π‘ **Mazoezi Bora**: Tumia `GET` kwa fomu za utafutaji na vichujio (kuchukua data), tumia `POST` kwa usajili wa mtumiaji, kuingia, na kuunda data.
### Kusanidi Uwasilishaji wa Fomu
Tuweke usajili wako wa fomu kuwasiliana ipasavyo na API ya nyuma kwa kutumia mbinu ya POST:
```html
```
**Kuelewa uthibitishaji ulioimarishwa:**
- **Huchanganya** viashiria vya sehemu zinazotakiwa na maelezo ya msaada
- **Inajumuisha** sifa za `pattern` kwa uthibitishaji wa muundo
- **Hutoa** sifa za `title` kwa upatikanaji na maelezo ya vidokezo
- **Inaongeza** maandishi ya msaada kuelekeza utafsiri wa mtumiaji
- **Inatumia** muundo wa HTML unaohusiana kwa upatikanaji bora zaidi
### Sheria za Uthibitishaji wa Juu
**Kila sheria ya uthibitishaji hufanikisha nini:**
| Sehemu | Sheria za Uthibitishaji | Faida kwa Mtumiaji |
|-------|------------------|--------------|
| Jina la Mtumiaji | `required`, `minlength="3"`, `maxlength="20"`, `pattern="[a-zA-Z0-9_]+"` | Huhakikisha vitambulisho halali na vya kipekee |
| Sarafu | `required`, `maxlength="3"`, `pattern="[A-Z$β¬Β£Β₯βΉ]+"` | Hukubali alama za sarafu zinazotumika sana |
| Salio | `min="0"`, `step="0.01"`, `type="number"` | Huzuia salio hasi |
| Maelezo | `maxlength="100"` | Huweka mipaka ya urefu wa busara |
### Kupima Tabia ya Uthibitishaji
**Jaribu hali hizi za uthibitishaji:**
1. **Wasilisha** fomu ikiwa sehemu zinazotakiwa ziko tupu
2. **Ingiza** jina la mtumiaji lenye herufi chache kuliko 3
3. **Jaribu** herufi za kipekee kwenye sehemu ya jina la mtumiaji
4. **Weka** kiasi chenye salio hasi

**Utakayoyaona:**
- **Kivinjari kinaonyesha** ujumbe wa uthibitishaji wa wenyeji
- **Marekebisho ya mtindo** kulingana na hali za `:valid` na `:invalid`
- **Kuzuia kuwasilisha fomu** hadi uthibitishaji wote ufaulu
- **Mwangaza unaoelekezwa moja kwa moja** kwenye sehemu ya kwanza isiyo sahihi
### Uthibitishaji Wa Mteja vs Wa Server
```mermaid
graph LR
A[Uhakiki wa Mbele ya Mteja] --> B[Maoni ya Haraka]
A --> C[UX Bora]
A --> D[Mwendo Mdogo wa Seva]
E[Uhakiki wa Seva] --> F[Usalama]
E --> G[Uadilifu wa Data]
E --> H[Sheria za Biashara]
A -.-> I[Zote Zinahitajika]
E -.-> I
```
**Kwa nini unahitaji tabaka zote mbili:**
- **Uthibitishaji wa mteja**: Hutoa mrejesho wa haraka na kuboresha uzoefu wa mtumiaji
- **Uthibitishaji wa server**: Huhakikisha usalama na hushughulikia sheria tata za biashara
- **Mbinu ya mchanganyiko**: Hutoa programu zenye imara, rafiki kwa watumiaji, na salama
- **Kuboresha kwa hatua**: Hufanya kazi hata JavaScript ikiwa imezimwa
> π‘οΈ **Kumbusho la Usalama**: Kamwe usitegemee uthibitishaji wa upande wa mteja peke yake! Watumiaji wabaya wanaweza kupita checks za mteja, kwa hivyo uthibitishaji wa server ni muhimu kwa usalama na uadilifu wa data.
### β‘ **Unachoweza Kufanya kwa Dakika 5 Zijazo**
- [ ] Jaribu fomu yako na data zisizo sahihi kuona ujumbe wa uthibitishaji
- [ ] Jaribu kuwasilisha fomu huku JavaScript ikiwa imezimwa kuona uthibitishaji wa HTML5
- [ ] Fungua DevTools ya kivinjari na angalia data ya fomu inayotumwa server
- [ ] Jaribu aina tofauti za viingizo kuona mabadiliko ya kibodi ya simu
### π― **Unachoweza Kufanikisha Saa Hii**
- [ ] Kumaliza mtihani wa baada ya somo na kuelewa dhana za usimamizi wa fomu
- [ ] Kutekeleza changamoto ya uthibitishaji kamili na mrejesho wa wakati halisi
- [ ] Ongeza urembo wa CSS kuunda fomu za kitaalamu
- [ ] Unda usimamizi wa makosa kwa majina ya watumiaji rudufu na makosa ya server
- [ ] Ongeza sehemu za kuthibitisha nywila zenye uthibitishaji wa kulingana
### π **Safari Yako ya Ustadi wa Fomu kwa Wiki Zote**
- [ ] Kumaliza programu kamili ya benki yenye vipengele vya fomu vya hali ya juu
- [ ] Kutekeleza uwezo wa kupakia faili za picha za wasifu au hati
- [ ] Ongeza fomu za hatua nyingi zisizo na mshono na usimamizi wa hali
- [ ] Unda fomu zinazobadilika kulingana na chaguzi za mtumiaji
- [ ] Kutekeleza uhifadhi wa fomu kiotomatiki na urejeshaji kwa uzoefu bora
- [ ] Ongeza uthibitishaji wa hali ya juu kama uthibitishaji wa barua pepe na muundo wa nambari za simu
### π **Ustadi Wako wa Mwezi Mmoja wa Maendeleo ya Mbele**
- [ ] Tenga programu ngumu za fomu zenye mantiki ya masharti na michakato ya kazi
- [ ] Jifunze maktaba na fremu za fomu kwa maendeleo ya haraka
- [ ] Stadi za upatikanaji na kanuni za muundo wa kuwa jumuishi
- [ ] Kutekeleza utaifa na kwao kwa fomu za kimataifa
- [ ] Unda maktaba za vipengele vya fomu vinavyoweza kutumika tena na mifumo ya muundo
- [ ] Changia katika miradi ya fomu ya chanzo huria na shiriki mbinu bora
## π― Ratiba Yako ya Ustadi wa Maendeleo ya Fomu
```mermaid
timeline
title Maendeleo ya Fomu & Mafunzo ya Uzoefu wa Mtumiaji
section Msingi wa HTML (dakika 15)
Fomu za Kielezo: Vipengele vya fomu
: Aina za inputi
: Lebo na upatikanaji
: Uboreshaji endelevu
section Muunganiko wa JavaScript (dakika 25)
Usimamizi wa Matukio: Uwasilishaji wa fomu
: Ukusanyaji wa data
: Mawasiliano ya AJAX
: Mifumo ya async/await
section Mifumo ya Uhakiki (dakika 35)
Usalama wa Mafuatao Mengi: Uhakiki wa HTML5
: Mantiki upande wa mteja
: Uhakiki upande wa seva
: Usimamizi wa makosa
section Uzoefu wa Mtumiaji (dakika 45)
Urembo wa Kiolesura: Hali za upakiaji
: Ujumbe wa mafanikio
: Urejeshaji wa makosa
: Sifa za upatikanaji
section Mifumo ya Juu (wiki 1)
Fomu za Kitaalamu: Uhakiki wa mabadiliko
: Mchakato wa hatua nyingi
: Upakiaji wa faili
: Maoni ya wakati halisi
section Ujuzi wa Biashara (mwezi 1)
Programu za Uzalishaji: Maktaba za fomu
: Mikakati ya upimaji
: Uboreshaji wa utendaji
: Mbinu bora za usalama
```
### π οΈ Muhtasari wa Zana Za Maendeleo ya Fomu Yako
Baada ya kumaliza somo hili, sasa umejijengea ujuzi wa:
- **Fomu za HTML5**: Muundo wa kifasili, aina za viingizo, na vipengele vya upatikanaji
- **Usimamizi wa Fomu kwa JavaScript**: Usimamizi wa matukio, ukusanyaji data, na mawasiliano ya AJAX
- **Msingi wa Uthibitishaji**: Uthibitishaji wa tabaka nyingi kwa ajili ya usalama na uzoefu wa mtumiaji
- **Programu Isiyo na Mzigo (Asynchronous)**: Modern fetch API na mifumo ya async/await
- **Usimamizi wa Makosa**: Ushughulikiaji kamili wa makosa na mifumo ya mrejesho wa mtumiaji
- **Ubunifu wa Uzoefu wa Mtumiaji**: Hali za kupakia, ujumbe wa mafanikio, na urejeshaji wa makosa
- **Kuboresha kwa Msingi**: Fomu zinazofanya kazi katika kivinjari na uwezo wote
**Matumizi Halisi**: Ujuzi wako wa maendeleo ya fomu unahusiana moja kwa moja na:
- **Programu za E-commerce**: Mchakato wa malipo, usajili wa akaunti, na fomu za malipo
- **Programu za Biashara**: Mifumo ya kuingiza data, kiolesura cha ripoti, na programu za mchakato wa kazi
- **Usimamizi wa Maudhui**: Majukwaa ya kuchapisha, maudhui yanayotengenezwa na watumiaji, na violesura vya usimamizi
- **Programu za Fedha**: Violesura vya benki, majukwaa ya uwekezaji, na mifumo ya muamala
- **Mifumo ya Afya**: Viunganishi vya mgonjwa, ratiba za miadi, na fomu za rekodi za tiba
- **Majukwaa ya Elimu**: Usajili wa kozi, zana za tathmini, na usimamizi wa mafunzo
**Ujuzi wa Kitaalamu Uliopatikana**: Sasa unaweza:
- **Kubuni** fomu zinazopatikana kwa watumiaji wote ikiwa ni pamoja na wenye ulemavu
- **Kutekeleza** uthibitishaji salama wa fomu unaozuia uharibifu wa data na udhaifu wa usalama
- **Kuunda** violesura vinavyojibu vinavyotoa mrejesho na mwongozo wazi
- **Kutatua** matatizo changamano ya fomu kwa kutumia zana za msanidi kivinjari na uchambuzi wa mtandao
- **Kuboresha** utendaji wa fomu kupitia usindikaji wa data na mikakati ya uthibitishaji inayofaa
**Dhana za Maendeleo ya Mbele Zilizojifunza**:
- **Mwanga wa Tukio (Event-Driven Architecture)**: Usimamizi wa mwingiliano wa mtumiaji na mifumo ya majibu
- **Programu Isiyo na Mzigo (Asynchronous Programming)**: Mawasiliano yasiyozuia na usimamizi wa makosa ya server
- **Uthibitishaji wa Data**: Usalama na uhakiki wa mteja na server
- **Ubunifu wa Uzoefu wa Mtumiaji**: Violesura vinavyoeleweka vinavyoelekeza watumiaji kuelekea mafanikio
- **Uhandisi wa Upatikanaji**: Muundo unaojumuisha kazi kwa mahitaji mbalimbali ya watumiaji
**Ngazi Inayofuata**: Uko tayari kuchunguza maktaba za fomu za hali ya juu, kutekeleza sheria tata za uthibitishaji, au kujenga mifumo ya ukusanyaji wa data ya daraja la biashara!
π **Mshindi Amefunguliwa**: Umejenga mfumo kamili wa usimamizi wa fomu unaojumuisha uthibitishaji wa kitaalamu, usimamizi wa makosa, na mifumo ya uzoefu wa mtumiaji!
---
---
## GitHub Copilot Agent Challenge π
Tumia mode ya Wakala kumaliza changamoto ifuatayo:
**Maelezo:** Boreshaji la fomu ya usajili na uthibitishaji kamili wa upande wa mteja na mrejesho wa mtumiaji. Changamoto hii itakusaidia kufanya mazoezi ya uthibitishaji wa fomu, usimamizi wa makosa, na kuboresha uzoefu wa mtumiaji kwa mrejesho unaoingiliana.
**Prompt:** Tengeneza mfumo kamili wa uthibitishaji wa fomu kwa fomu ya usajili unaojumuisha: 1) Maoni ya uthibitishaji kwa wakati halisi kwa kila eneo linapokuwa linaandikwa, 2) Ujumbe wa uthibitishaji maalum unaoonekana chini ya kila eneo la kuingiza, 3) Eneo la uthibitishaji la nenosiri lenye ukaguzi wa kulingana, 4) Viashiria vya kuona (kama alama za tiki za kijani kwa maeneo sahihi na onyo jekundu kwa yasiyo sahihi), 5) Kitufe cha tuma kinachowezeshwa tu wakati uthibitisho wote umepita. Tumia sifa za uthibitishaji za HTML5, CSS kwa ajili ya mtindo wa hali za uthibitishaji, na JavaScript kwa tabia ya kiingiliani.
Jifunze zaidi kuhusu [agent mode](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode) hapa.
## π Changamoto
Onyesha ujumbe wa kosa katika HTML ikiwa mtumiaji tayari yupo.
Hapa kuna mfano wa jinsi ukurasa wa kuingia unaweza kuonekana baada ya kubadilishwa mitindo kidogo:

## Mtihani wa Baada ya Maktaba
[Post-lecture quiz](https://ff-quizzes.netlify.app/web/quiz/44)
## Mapitio & Kujifunza Binafsi
Waendelezaji wamekuwa wabunifu sana kuhusu juhudi zao za kujenga fomu, hasa kuhusu mikakati ya uthibitishaji. Jifunze kuhusu mito tofauti ya fomu kwa kupitia [CodePen](https://codepen.com); unaweza kupata fomu za kuvutia na zenye msukumo?
## Kazi ya Nyumbani
[Mpangilie programu yako ya benki](assignment.md)
---
**Kiarifa cha Msamaha**:
Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuwa sahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au kasoro. Hati ya asili katika lugha yake ya asili inapaswa kuzingatiwa kama chanzo chenye mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya mwanadamu inapendekezwa. Hatuna dhamana kwa maelewano au tafsiri za makosa zinazotokana na matumizi ya tafsiri hii.