# एक बैंकिंग ऐप बनाएं भाग 2: लॉगिन और रजिस्ट्रेशन फॉर्म बनाएं
```mermaid
journey
title आपका फॉर्म विकास यात्रा
section HTML Foundation
फॉर्म तत्वों को समझें: 3: Student
इनपुट प्रकार सीखें: 4: Student
पहुंच्यता में निपुण बनें: 4: Student
section JavaScript Integration
फॉर्म सबमिशन संभालें: 4: Student
AJAX संचार लागू करें: 5: Student
सर्वर प्रतिक्रियाओं को संसाधित करें: 5: Student
section Validation Systems
मल्टी-लेयर सत्यापन बनाएं: 5: Student
उपयोगकर्ता अनुभव बढ़ाएं: 5: Student
डेटा अखंडता सुनिश्चित करें: 5: Student
```
## प्री-लेक्चर क्विज़
[प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/web/quiz/43)
क्या आपने कभी ऑनलाइन फॉर्म भरते हुए अपना ईमेल फॉर्मेट रिजेक्ट होते देखा है? या सबमिट करते ही सभी जानकारी खो दी है? हम सभी ने इन निराशाजनक अनुभवों का सामना किया है।
फॉर्म आपके उपयोगकर्ताओं और आपके ऐप्लिकेशन की कार्यक्षमता के बीच का पुल होते हैं। जैसे एयर ट्रैफिक कंट्रोलर विमानों को सुरक्षित गंतव्य तक ले जाने के लिए सावधानीपूर्वक प्रोटोकॉल का उपयोग करते हैं, वैसे ही अच्छी तरह डिज़ाइन किए गए फॉर्म स्पष्ट प्रतिक्रिया देते हैं और महंगे त्रुटियों को रोकते हैं। खराब फॉर्म उपयोगकर्ताओं को व्यस्त हवाई अड्डे में मिसकम्युनिकेशन से भी जल्दी दूर भगा सकते हैं।
इस पाठ में, हम आपके स्थैतिक बैंकिंग ऐप को एक इंटरैक्टिव ऐप्लिकेशन में बदलेंगे। आप ऐसे फॉर्म बनाएंगे जो उपयोगकर्ता की इनपुट को सत्यापित करें, सर्वरों के साथ संवाद करें, और सहायक फीडबैक प्रदान करें। इसे ऐसा समझें जैसे आप नियंत्रण इंटरफ़ेस बना रहे हों जो उपयोगकर्ताओं को आपके ऐप के फीचर्स नेविगेट करने देता है।
अंत तक, आपके पास एक पूर्ण लॉगिन और रजिस्ट्रेशन सिस्टम होगा जो सत्यापन के साथ उपयोगकर्ताओं को निराशा के बजाय सफलता की ओर मार्गदर्शन करता है।
```mermaid
mindmap
root((फॉर्म विकास))
HTML Foundation
Semantic Elements
Input Types
Accessibility
Label Association
User Experience
Validation Feedback
Error Prevention
Loading States
Success Messaging
JavaScript Integration
Event Handling
AJAX Communication
Data Processing
Error Management
Validation Layers
HTML5 Validation
Client-side Logic
Server-side Security
Progressive Enhancement
Modern Patterns
Fetch API
Async/Await
Form Data API
Promise Handling
```
## पूर्व आवश्यकताएँ
फॉर्म बनाने से पहले, आइए सुनिश्चित करें कि आपकी सेटअप सही ढंग से पूरी हो चुकी है। यह पाठ ठीक वहीं से शुरू होता है जहां हमने पिछले पाठ में छोड़ा था, इसलिए अगर आपने अगला भाग छोड़ दिया है, तो पहले मूल बातें ठीक से काम करना सुनिश्चित करें।
### आवश्यक सेटअप
| घटक | स्थिति | विवरण |
|-----------|--------|-------------|
| [HTML टेम्प्लेट्स](../1-template-route/README.md) | ✅ आवश्यक | आपका मूल बैंकिंग ऐप संरचना |
| [Node.js](https://nodejs.org) | ✅ आवश्यक | सर्वर के लिए जावास्क्रिप्ट रनटाइम |
| [बैंक API सर्वर](../api/README.md) | ✅ आवश्यक | डेटा संग्रहण के लिए बैकएंड सेवा |
> 💡 **विकास सुझाव**: आप एक ही समय में दो अलग सर्वर चलाएंगे – एक आपके फ्रंट-एंड बैंकिंग ऐप के लिए और दूसरा बैकएंड API के लिए। यह सेटअप वास्तविक विकास की तरह है जहाँ फ्रंटएंड और बैकएंड सेवाएं स्वतंत्र रूप से काम करती हैं।
### सर्वर कॉन्फ़िगरेशन
**आपके विकास वातावरण में शामिल होंगे:**
- **फ्रंटएंड सर्वर**: आपका बैंकिंग ऐप सर्व करता है (आमतौर पर पोर्ट `3000`)
- **बैकएंड API सर्वर**: डेटा संग्रहण और पुनर्प्राप्ति संभालता है (पोर्ट `5000`)
- **दोनों सर्वर** एक साथ बिना टकराव के चल सकते हैं
**अपने API कनेक्शन का परीक्षण करें:**
```bash
curl http://localhost:5000/api
# अपेक्षित प्रतिक्रिया: "Bank API v1.0.0"
```
**यदि आप API संस्करण प्रतिक्रिया देखते हैं, तो आप आगे बढ़ने के लिए तैयार हैं!**
---
## HTML फॉर्म्स और कंट्रोल्स को समझना
HTML फॉर्म वे तरीके हैं जिनसे उपयोगकर्ता आपके वेब ऐप्लिकेशन के साथ संवाद करते हैं। इन्हें उस टेलीग्राफ सिस्टम के समान समझें जिसने 19वीं सदी में दूर-दराज़ स्थानों को जोड़ा था – ये उपयोगकर्ता के इरादे और ऐप्लिकेशन प्रतिक्रिया के बीच का संचार प्रोटोकॉल हैं। जब इन्हें सोच-समझकर डिज़ाइन किया जाता है, तो ये त्रुटियों को पकड़ते हैं, इनपुट फॉर्मेटिंग को मार्गदर्शन करते हैं, और उपयोगी सुझाव प्रदान करते हैं।
आधुनिक फॉर्म बेसिक टेक्स्ट इनपुट से काफी अधिक परिष्कृत हैं। HTML5 ने विशिष्ट इनपुट प्रकार पेश किए हैं जो ईमेल मान्यता, संख्या फॉर्मेटिंग और तारीख चयन को स्वचालित रूप से संभालते हैं। ये सुधार एक्सेसिबिलिटी और मोबाइल उपयोगकर्ता अनुभव दोनों के लिए फायदेमंद हैं।
### आवश्यक फॉर्म तत्व
**प्रत्येक फॉर्म के निर्माण ब्लॉक:**
```html
```
**यह कोड क्या करता है:**
- एक अद्वितीय पहचानकर्ता के साथ फॉर्म कंटेनर बनाता है
- डेटा सबमिशन के लिए HTTP मेथड निर्दिष्ट करता है
- एक्सेसिबिलिटी के लिए लेबल को इनपुट्स से जोड़ता है
- फॉर्म को प्रोसेस करने के लिए सबमिट बटन परिभाषित करता है
### आधुनिक इनपुट प्रकार और गुण
| इनपुट प्रकार | उद्देश्य | उदाहरण उपयोग |
|--------------|----------|---------------|
| `text` | सामान्य टेक्स्ट इनपुट | `` |
| `email` | ईमेल मान्यता | `` |
| `password` | छुपी हुई टेक्स्ट एंट्री | `` |
| `number` | संख्यात्मक इनपुट | `` |
| `tel` | फोन नंबर | `` |
> 💡 **आधुनिक HTML5 लाभ**: विशिष्ट इनपुट प्रकार स्वचालित मान्यता, उचित मोबाइल कीबोर्ड और बेहतर पहुंच समर्थन प्रदान करते हैं, बिना अतिरिक्त जावास्क्रिप्ट के!
### बटन प्रकार और व्यवहार
```html
```
**प्रत्येक बटन प्रकार क्या करता है:**
- **सबमिट बटन:** फॉर्म सबमिशन ट्रिगर करते हैं और निर्दिष्ट एंडपॉइंट पर डेटा भेजते हैं
- **रीसेट बटन:** सभी फॉर्म फील्ड्स को उनके शुरुआती स्थिति में पुनः सेट करते हैं
- **सामान्य बटन:** कोई डिफ़ॉल्ट व्यवहार नहीं, कस्टम जावास्क्रिप्ट की आवश्यकता होती है
> ⚠️ **महत्वपूर्ण नोट**: `` तत्व सेल्फ-क्लोज़िंग होता है और इसे क्लोज़िंग टैग की आवश्यकता नहीं होती। आधुनिक सर्वोत्तम अभ्यास `` को बिना स्लैश के लिखना है।
### अपना लॉगिन फॉर्म बनाना
अब आइए एक व्यावहारिक लॉगिन फॉर्म बनाएं जो आधुनिक HTML फॉर्म प्रथाओं को दर्शाता है। हम एक बुनियादी संरचना से शुरू करेंगे और इसे एक्सेसिबिलिटी फीचर्स और सत्यापन के साथ धीरे-धीरे बढ़ाएंगे।
```html
Bank App
Login
```
**यहाँ क्या होता है:**
- फॉर्म को सेमांटिक HTML5 तत्वों के साथ संरचित करता है
- संबंधित तत्वों को `div` कंटेनरों के साथ समूहित करता है जिनमें अर्थपूर्ण क्लासेस हैं
- लेबल को इनपुट से जोड़ता है `for` और `id` गुणों के प्रयोग से
- बेहतर UX के लिए आधुनिक गुण जैसे `autocomplete` और `placeholder` शामिल करता है
- ब्राउज़र डिफ़ॉल्ट के बजाय जावास्क्रिप्ट से सत्यापन के लिए `novalidate` जोड़ता है
### उचित लेबल की शक्ति
**आधुनिक वेब विकास में लेबल क्यों महत्वपूर्ण हैं:**
```mermaid
graph TD
A[लेबल तत्व] --> B[स्क्रीन रीडर समर्थन]
A --> C[क्लिक लक्ष्य विस्तार]
A --> D[फ़ॉर्म सत्यापन]
A --> E[एसईओ लाभ]
B --> F[सभी उपयोगकर्ताओं के लिए सुलभ]
C --> G[बेहतर मोबाइल अनुभव]
D --> H[स्पष्ट त्रुटि संदेश]
E --> I[बेहतर खोज रैंकिंग]
```
**उचित लेबल क्या हासिल करते हैं:**
- स्क्रीन रीडर को फॉर्म फ़ील्ड को स्पष्ट रूप से घोषित करने योग्य बनाते हैं
- क्लिक करने योग्य क्षेत्र का विस्तार करते हैं (लेबल पर क्लिक करने से इनपुट फोकस होता है)
- मोबाइल उपयोगिता में सुधार करते हैं बड़े टैप लक्ष्यों के साथ
- फॉर्म सत्यापन के लिए अर्थपूर्ण त्रुटि संदेशों का समर्थन करते हैं
- फॉर्म तत्वों को सेमांटिक अर्थ देकर SEO बढ़ाते हैं
> 🎯 **एक्सेसिबिलिटी लक्ष्य**: प्रत्येक फॉर्म इनपुट के साथ एक जुड़ा हुआ लेबल होना चाहिए। यह सरल प्रथा आपके फॉर्म को सभी के लिए उपयोगी बनाती है, जिसमें विकलांग उपयोगकर्ता भी शामिल हैं, और सभी उपयोगकर्ताओं के लिए अनुभव सुधारती है।
### रजिस्ट्रेशन फॉर्म बनाना
रजिस्ट्रेशन फॉर्म के लिए उपयोगकर्ता खाता बनाने के लिए अधिक विस्तृत जानकारी की जरूरत होती है। आइए इसे आधुनिक HTML5 सुविधाओं और बढ़ी हुई एक्सेसिबिलिटी के साथ बनाएं।
```html
Register
```
**ऊपर हमने:**
- बेहतर स्टाइलिंग और लेआउट के लिए प्रत्येक फ़ील्ड को कंटेनर डिव्स में व्यवस्थित किया है
- ब्राउज़र ऑटोफिल समर्थन के लिए उपयुक्त `autocomplete` गुण जोड़े हैं
- उपयोगकर्ता इनपुट मार्गदर्शन के लिए सहायक प्लेसहोल्डर टेक्स्ट शामिल किया है
- सेंसिबल डिफ़ॉल्ट्स `value` गुण के माध्यम से सेट किए हैं
- सत्यापन गुण जैसे `required`, `maxlength`, और `min` लागू किए हैं
- बैलेंस फ़ील्ड के लिए दशमलव समर्थन के साथ `type="number"` उपयोग किया है
### इनपुट प्रकार और व्यवहार की खोज
**आधुनिक इनपुट प्रकार उन्नत कार्यक्षमता प्रदान करते हैं:**
| सुविधा | लाभ | उदाहरण |
|---------|---------|----------|
| `type="number"` | मोबाइल पर संख्यात्मक कीपैड | आसान बैलेंस प्रविष्टि |
| `step="0.01"` | दशमलव सटीकता नियंत्रण | मुद्रा में सेंट्स के लिए |
| `autocomplete` | ब्राउज़र ऑटोफिल | तेज फॉर्म भरना |
| `placeholder` | संदर्भीय संकेत | उपयोगकर्ता की अपेक्षाओं का मार्गदर्शन करता है |
> 🎯 **एक्सेसिबिलिटी चुनौती**: केवल अपनी कीबोर्ड का उपयोग करते हुए फॉर्म को नेविगेट करके देखें! `Tab` से क्षेत्र के बीच जाएं, `Space` से चेक बॉक्स चेक करें, और `Enter` से सबमिट करें। यह अनुभव आपको समझने में मदद करता है कि स्क्रीन रीडर उपयोगकर्ता आपके फॉर्म के साथ कैसे इंटरैक्ट करते हैं।
### 🔄 **शैक्षिक चेक-इन**
**फॉर्म फाउंडेशन समझना**: जावास्क्रिप्ट लागू करने से पहले, सुनिश्चित करें कि आप समझते हैं:
- ✅ सेमांटिक HTML कैसे एक्सेसिबल फॉर्म संरचनाएं बनाता है
- ✅ मोबाइल कीबोर्ड और सत्यापन के लिए इनपुट प्रकार क्यों महत्वपूर्ण हैं
- ✅ लेबल और फॉर्म कंट्रोल के बीच संबंध
- ✅ फॉर्म गुण ब्राउज़र डिफ़ॉल्ट व्यवहार को कैसे प्रभावित करते हैं
**त्वरित स्व-परीक्षण**: अगर आप बिना जावास्क्रिप्ट के हैंडल किए फॉर्म सबमिट करते हैं तो क्या होता है?
*उत्तर: ब्राउज़र डिफ़ॉल्ट सबमिशन करता है, सामान्यतः क्रिया URL पर रीडायरेक्ट करता है*
**HTML5 फॉर्म लाभ**: आधुनिक फॉर्म प्रदान करते हैं:
- **बिल्ट-इन सत्यापन**: स्वचालित ईमेल और संख्या फॉर्मेट जांच
- **मोबाइल अनुकूलन**: विभिन्न इनपुट प्रकारों के लिए उचित कीबोर्ड
- **एक्सेसिबिलिटी**: स्क्रीन रीडर और कीबोर्ड नेविगेशन समर्थन
- **प्रोग्रेसिव वृद्धि**: जब जावास्क्रिप्ट अक्षम हो तब भी काम करता है
## फॉर्म सबमिशन मेथड समझना
जब कोई आपका फॉर्म भरता है और सबमिट करता है, तब उस डेटा को कहीं जाना होता है – आम तौर पर एक सर्वर पर जो उसे सुरक्षित रख सके। इसके कुछ अलग-अलग तरीके होते हैं, और यह जानना कि कब कौन सा उपयोग करना है, बाद में आपको कुछ सिरदर्द से बचा सकता है।
आइए देखें कि वास्तव में तब क्या होता है जब कोई सबमिट बटन दबाता है।
### डिफ़ॉल्ट फॉर्म व्यवहार
सबसे पहले, चलिए मूल फॉर्म सबमिशन पर ध्यान दें:
**अपने मौजूदा फॉर्म का परीक्षण करें:**
1. अपने फॉर्म में *Register* बटन पर क्लिक करें
2. अपने ब्राउज़र के एड्रेस बार में बदलाव देखें
3. देखें कि पेज कैसे रीलोड होता है और डेटा URL में आता है

### HTTP मेथड्स की तुलना
```mermaid
graph TD
A[फॉर्म सबमिशन] --> B{HTTP विधि}
B -->|GET| C[URL में डेटा]
B -->|POST| D[रिक्वेस्ट बॉडी में डेटा]
C --> E[ऐड्रेस बार में दिखाई देता है]
C --> F[डेटा का आकार सीमित]
C --> G[बुकमार्क योग्य]
D --> H[URL से छुपा हुआ]
D --> I[बड़ी डेटा क्षमता]
D --> J[अधिक सुरक्षित]
```
**अंतर को समझना:**
| मेथड | उपयोग मामला | डेटा स्थान | सुरक्षा स्तर | आकार सीमा |
|--------|----------|---------------|----------------|-------------|
| `GET` | खोज प्रश्न, फ़िल्टर | URL पैरामीटर | कम (दृश्य) | ~2000 अक्षर |
| `POST` | उपयोगकर्ता खाते, संवेदनशील डेटा | रिक्वेस्ट बॉडी | अधिक (छुपा हुआ) | कोई व्यावहारिक सीमा नहीं |
**मूलभूत अंतर को समझना:**
- **GET**: फॉर्म डेटा को URL क्वेरी पैरामीटर के रूप में जोड़ता है (खोज संचालन के लिए उपयुक्त)
- **POST**: डेटा को रिक्वेस्ट बॉडी में शामिल करता है (संवेदनशील जानकारी के लिए आवश्यक)
- **GET सीमाएं**: आकार सीमाएं, दृश्यमान डेटा, ब्राउज़र इतिहास में लगातार बने रहना
- **POST फायदे**: बड़ी डेटा क्षमता, गोपनीयता संरक्षण, फ़ाइल अपलोड समर्थन
> 💡 **सर्वोत्तम अभ्यास**: खोज फॉर्म और फ़िल्टर के लिए `GET` का उपयोग करें, उपयोगकर्ता पंजीकरण, लॉगिन और डेटा निर्माण के लिए `POST` का।
### फॉर्म सबमिशन कॉन्फ़िगरेशन
आइए अपने रजिस्ट्रेशन फॉर्म को बैकएंड API के साथ POST मेथड का उपयोग करके सही ढंग से संवाद करने के लिए कॉन्फ़िगर करें:
```html
```
**उन्नत सत्यापन को समझना:**
- **अनिवार्य फ़ील्ड इंडिकेटर** के साथ सहायक विवरण संयोजित करता है
- **स्वरूप सत्यापन के लिए** `pattern` विशेषताएं शामिल हैं
- **पहुंच क्षमता और टूलटिप्स के लिए** `title` विशेषताएँ प्रदान करता है
- **उपयोगकर्ता इनपुट मार्गदर्शन के लिए** सहायक टेक्स्ट जोड़ता है
- **बेहतर पहुंच के लिए** सैमान्टिक HTML संरचना का उपयोग करता है
### उन्नत सत्यापन नियम
**प्रत्येक सत्यापन नियम क्या करता है:**
| क्षेत्र | सत्यापन नियम | उपयोगकर्ता लाभ |
|-------|------------------|--------------|
| उपयोगकर्ता नाम | `required`, `minlength="3"`, `maxlength="20"`, `pattern="[a-zA-Z0-9_]+"` | मान्य, अद्वितीय पहचान सुनिश्चित करता है |
| मुद्रा | `required`, `maxlength="3"`, `pattern="[A-Z$€£¥₹]+"` | सामान्य मुद्रा प्रतीक स्वीकार करता है |
| शेष राशि | `min="0"`, `step="0.01"`, `type="number"` | नकारात्मक शेष राशि से बचाता है |
| विवरण | `maxlength="100"` | उचित लंबाई सीमा |
### सत्यापन व्यवहार का परीक्षण करना
**इन सत्यापन परिदृश्यों का प्रयास करें:**
1. **अनिवार्य फ़ील्ड खाली छोड़कर** फॉर्म सबमिट करें
2. **3 अक्षर से छोटा उपयोगकर्ता नाम दर्ज करें**
3. **उपयोगकर्ता नाम फ़ील्ड में विशेष वर्ण आज़माएं**
4. **नकारात्मक शेष राशि दर्ज करें**

**आप क्या देखेंगे:**
- **ब्राउज़र स्वदेशी सत्यापन संदेश प्रदर्शित करता है**
- **`:valid` और `:invalid` राज्यों के आधार पर स्टाइलिंग बदलती है**
- **जब तक सभी सत्यापन पास नहीं होते फॉर्म सबमिशन रोक दिया जाता है**
- **ध्यान अपने आप पहली अमान्य फील्ड पर जाता है**
### क्लाइंट-साइड बनाम सर्वर-साइड सत्यापन
```mermaid
graph LR
A[क्लाइंट-साइड सत्यापन] --> B[तुरंत प्रतिक्रिया]
A --> C[बेहतर उपयोगकर्ता अनुभव]
A --> D[कम सर्वर लोड]
E[सर्वर-साइड सत्यापन] --> F[सुरक्षा]
E --> G[डेटा अखंडता]
E --> H[व्यवसायिक नियम]
A -.-> I[दोनों आवश्यक हैं]
E -.-> I
```
**दोनों स्तरों की आवश्यकता क्यों है:**
- **क्लाइंट-साइड सत्यापन** त्वरित प्रतिक्रिया देता है और उपयोगकर्ता अनुभव में सुधार करता है
- **सर्वर-साइड सत्यापन** सुरक्षा सुनिश्चित करता है और जटिल व्यावसायिक नियम संभालता है
- **संयुक्त दृष्टिकोण** मजबूत, उपयोगकर्ता-अनुकूल और सुरक्षित अनुप्रयोग बनाता है
- **प्रोग्रेसिव एन्हांसमेंट** तब भी काम करता है जब JavaScript अक्षम हो
> 🛡️ **सुरक्षा अनुस्मारक**: कभी भी केवल क्लाइंट-साइड सत्यापन पर भरोसा न करें! दुर्भावनापूर्ण उपयोगकर्ता क्लाइंट-साइड जांच को बायपास कर सकते हैं, इसलिए सुरक्षा और डेटा अखंडता के लिए सर्वर-साइड सत्यापन आवश्यक है।
### ⚡ **अगले 5 मिनट में क्या कर सकते हैं**
- [ ] अपनी फॉर्म को अमान्य डेटा के साथ टेस्ट करें और सत्यापन संदेश देखें
- [ ] JavaScript अक्षम करके फॉर्म सबमिट करने का प्रयास करें ताकि HTML5 सत्यापन देखें
- [ ] ब्राउज़र डेवलपर टूल खोलें और सर्वर को भेजे जा रहे फॉर्म डेटा की जांच करें
- [ ] विभिन्न इनपुट प्रकारों के साथ प्रयोग करें और मोबाइल कीबोर्ड परिवर्तनों को देखें
### 🎯 **इस घंटे में आप क्या हासिल कर सकते हैं**
- [ ] पोस्ट-लीसन क्विज़ पूरा करें और फॉर्म हैंडलिंग अवधारणाएं समझें
- [ ] वास्तविक समय प्रतिक्रिया के साथ व्यापक सत्यापन चुनौती लागू करें
- [ ] पेशेवर दिखने वाले फॉर्म बनाने के लिए CSS स्टाइलिंग जोड़ें
- [ ] डुप्लिकेट उपयोगकर्ता नाम और सर्वर त्रुटियों के लिए त्रुटि हैंडलिंग बनाएं
- [ ] मिलान सत्यापन के साथ पासवर्ड पुष्टि फील्ड जोड़ें
### 📅 **आपका सप्ताह भर का फॉर्म मास्टरी सफर**
- [ ] उन्नत फॉर्म सुविधाओं के साथ पूर्ण बैंकिंग ऐप पूरा करें
- [ ] प्रोफ़ाइल चित्र या दस्तावेज़ों के लिए फ़ाइल अपलोड क्षमताओं को लागू करें
- [ ] प्रगति सूचक और स्टेट मैनेजमेंट के साथ मल्टी-स्टेप फॉर्म जोड़ें
- [ ] उपयोगकर्ता चयन के आधार पर अनुकूलित डायनेमिक फॉर्म बनाएं
- [ ] बेहतर उपयोगकर्ता अनुभव के लिए फॉर्म ऑटोसेव और रिकवरी लागू करें
- [ ] ईमेल सत्यापन और फोन नंबर स्वरूपण जैसे उन्नत सत्यापन जोड़ें
### 🌟 **आपकी महीने भर की फ्रंटेंड विकास मास्टरी**
- [ ] सभ्यतापूर्ण लॉजिक और वर्कफ़्लो के साथ जटिल फॉर्म एप्लिकेशन बनाएं
- [ ] तेजी से विकास के लिए फॉर्म लाइब्रेरी और फ्रेमवर्क सीखें
- [ ] अभिगम्यता दिशानिर्देशों और समावेशी डिजाइन सिद्धांतों में महारत हासिल करें
- [ ] वैश्विक फॉर्म के लिए स्थानीयकरण और अंतर्राष्ट्रीयकरण लागू करें
- [ ] पुन: उपयोग योग्य फॉर्म कंपोनेंट लाइब्रेरी और डिज़ाइन सिस्टम बनाएं
- [ ] ओपन सोर्स फॉर्म प्रोजेक्ट्स में योगदान दें और सर्वोत्तम प्रथाएँ साझा करें
## 🎯 आपका फॉर्म विकास मास्टरी टाइमलाइन
```mermaid
timeline
title फॉर्म विकास और उपयोगकर्ता अनुभव सीखने की प्रगति
section HTML नींव (15 मिनट)
सैमेन्टिक फॉर्म: फॉर्म तत्व
: इनपुट प्रकार
: लेबल्स और पहुंचयोग्यता
: प्रगतिशील सुधार
section जावास्क्रिप्ट इंटीग्रेशन (25 मिनट)
इवेंट हैंडलिंग: फॉर्म सबमिशन
: डेटा संग्रहण
: AJAX संचार
: Async/await पैटर्न
section मान्यकरण प्रणालियाँ (35 मिनट)
बहु-स्तरीय सुरक्षा: HTML5 मान्यकरण
: क्लाइंट-साइड लॉजिक
: सर्वर-साइड सत्यापन
: त्रुटि प्रबंधन
section उपयोगकर्ता अनुभव (45 मिनट)
इंटरफ़ेस पॉलिश: लोडिंग स्टेट्स
: सफलता संदेश
: त्रुटि पुनर्प्राप्ति
: पहुंचयोग्यता विशेषताएँ
section उन्नत पैटर्न (1 सप्ताह)
पेशेवर फॉर्म: गतिशील मान्यकरण
: बहु-चरण वर्कफ़्लो
: फ़ाइल अपलोड
: रीयल-टाइम प्रतिक्रिया
section एंटरप्राइज कौशल (1 महीना)
उत्पादन अनुप्रयोग: फॉर्म पुस्तकालय
: परीक्षण रणनीतियाँ
: प्रदर्शन अनुकूलन
: सुरक्षा सर्वोत्तम प्रथाएँ
```
### 🛠️ आपका फॉर्म विकास टूलकिट सारांश
इस पाठ को पूरा करने के बाद, आपने अब महारत हासिल की है:
- **HTML5 फॉर्म**: सैमान्टिक संरचना, इनपुट प्रकार, और अभिगम्यता सुविधाएँ
- **JavaScript फॉर्म हैंडलिंग**: इवेंट प्रबंधन, डेटा संग्रह, और AJAX संचार
- **सत्यापन वास्तुकला**: सुरक्षा और उपयोगकर्ता अनुभव के लिए बहु-परत सत्यापन
- **असिंक्रोनस प्रोग्रामिंग**: आधुनिक fetch API और async/await पैटर्न
- **त्रुटि प्रबंधन**: व्यापक त्रुटि हैंडलिंग और उपयोगकर्ता प्रतिक्रिया प्रणाली
- **उपयोगकर्ता अनुभव डिजाइन**: लोडिंग स्टेट, सफलता संदेश, और त्रुटि सुधार
- **प्रोग्रेसिव एन्हांसमेंट**: सभी ब्राउज़र और क्षमताओं में काम करने वाले फॉर्म
**वास्तविक दुनिया के अनुप्रयोग**: आपकी फॉर्म विकास कौशल सीधे लागू होते हैं:
- **ई-कॉमर्स अनुप्रयोग**: चेकआउट प्रक्रियाएं, खाता पंजीकरण, और भुगतान फॉर्म
- **एंटरप्राइज़ सॉफ़्टवेयर**: डेटा प्रविष्टि प्रणालियाँ, रिपोर्टिंग इंटरफेस, और वर्कफ़्लो अनुप्रयोग
- **सामग्री प्रबंधन**: प्रकाशन प्लेटफ़ॉर्म, उपयोगकर्ता-जनित सामग्री, और प्रशासनिक इंटरफेस
- **वित्तीय अनुप्रयोग**: बैंकिंग इंटरफेस, निवेश प्लेटफ़ॉर्म, और लेनदेन प्रणाली
- **स्वास्थ्य प्रणालियाँ**: रोगी पोर्टल, नियुक्ति शेड्यूलिंग, और चिकित्सा रिकॉर्ड फॉर्म
- **शैक्षिक प्लेटफ़ॉर्म**: कोर्स पंजीकरण, मूल्यांकन उपकरण, और लर्निंग मैनेजमेंट
**प्रोफेशनल कौशल प्राप्त किए गए**: अब आप कर सकते हैं:
- **ऐसे फॉर्म डिजाइन करें** जो सभी उपयोगकर्ताओं के लिए अभिगम्य हों, जिसमें विकलांग लोग भी शामिल हैं
- **सुरक्षित फॉर्म सत्यापन लागू करें** जो डेटा भ्रष्टाचार और सुरक्षा खामियों को रोकता है
- **प्रतिसादात्मक यूजर इंटरफ़ेस बनाएं** जो स्पष्ट प्रतिक्रिया और मार्गदर्शन प्रदान करता है
- **ब्राउज़र डेवलपर टूल्स और नेटवर्क विश्लेषण का उपयोग करके** जटिल फॉर्म इंटरैक्शन डीबग करें
- **प्रभावी डेटा हैंडलिंग और सत्यापन रणनीतियों के माध्यम से** फॉर्म प्रदर्शन को अनुकूलित करें
**फ्रंटेंड विकास अवधारणाओं में महारत**:
- **इवेंट-ड्रिवन आर्किटेक्चर**: उपयोगकर्ता इंटरैक्शन हैंडलिंग और प्रतिक्रिया प्रणाली
- **असिंक्रोनस प्रोग्रामिंग**: गैर-अवरुद्ध सर्वर संचार और त्रुटि हैंडलिंग
- **डेटा सत्यापन**: क्लाइंट-साइड और सर्वर-साइड सुरक्षा और अखंडता जांच
- **उपयोगकर्ता अनुभव डिजाइन**: सहज इंटरफ़ेस जो उपयोगकर्ताओं को सफलता की ओर मार्गदर्शन करता है
- **अभिगम्यता इंजीनियरिंग**: समावेशी डिजाइन जो विविध उपयोगकर्ता आवश्यकताओं के लिए काम करता है
**अगला स्तर**: आप उन्नत फॉर्म लाइब्रेरी का अन्वेषण करने, जटिल सत्यापन नियम लागू करने, या एंटरप्राइज़-ग्रेड डेटा संग्रह प्रणालियाँ बनाने के लिए तैयार हैं!
🌟 **उपलब्धि अनलॉक की गई**: आपने एक पूर्ण फॉर्म हैंडलिंग सिस्टम बनाया है जिसमें पेशेवर सत्यापन, त्रुटि हैंडलिंग, और उपयोगकर्ता अनुभव के पैटर्न शामिल हैं!
---
---
## GitHub Copilot Agent Challenge 🚀
एजेंट मोड का उपयोग करके निम्नलिखित चुनौती पूरी करें:
**विवरण:** व्यापक क्लाइंट-साइड सत्यापन और उपयोगकर्ता प्रतिक्रिया के साथ पंजीकरण फॉर्म को बढ़ाएं। यह चुनौती आपको फॉर्म सत्यापन, त्रुटि हैंडलिंग, और इंटरेक्टिव प्रतिक्रिया के साथ उपयोगकर्ता अनुभव सुधारने का अभ्यास कराएगी।
**प्रॉम्प्ट:** एक पूर्ण फॉर्म सत्यापन प्रणाली बनाएं जिसमें शामिल हों: 1) उपयोगकर्ता के टाइप करने पर प्रत्येक फ़ील्ड के लिए वास्तविक समय में सत्यापन प्रतिक्रिया, 2) प्रत्येक इनपुट फ़ील्ड के नीचे कस्टम सत्यापन संदेश, 3) एक पासवर्ड पुष्टि फ़ील्ड जिसमें मिलान सत्यापन हो, 4) दृश्य सूचक (जैसे मान्य फ़ील्ड के लिए हरे टिक और अमान्य के लिए लाल चेतावनी), 5) एक सबमिट बटन जो केवल तब सक्षम होता है जब सभी सत्यापन सफल हों। HTML5 सत्यापन विशेषताओं, CSS का उपयोग स्टाइलिंग के लिए करें और इंटरैक्टिव व्यवहार के लिए JavaScript का उपयोग करें।
[agent mode](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode) के बारे में अधिक जानें।
## 🚀 चुनौती
यदि उपयोगकर्ता पहले से मौजूद है तो HTML में एक त्रुटि संदेश दिखाएं।
यहां एक उदाहरण है कि अंतिम लॉगिन पृष्ठ कैसा दिख सकता है कुछ CSS स्टाइलिंग के बाद:

## पोस्ट-लेक्चर क्विज़
[Post-lecture quiz](https://ff-quizzes.netlify.app/web/quiz/44)
## समीक्षा और स्व-अध्ययन
डेवलपर्स ने अपने फॉर्म निर्माण प्रयासों में बहुत रचनात्मकता दिखाई है, खासकर सत्यापन रणनीतियों के संदर्भ में। विभिन्न फॉर्म प्रवाहों को जानने के लिए [CodePen](https://codepen.com) देखें; क्या आप कुछ रोचक और प्रेरणादायक फॉर्म पा सकते हैं?
## असाइनमेंट
[अपने बैंक ऐप को स्टाइल करें](assignment.md)
---
**अस्वीकरण**:
इस दस्तावेज़ का अनुवाद AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) का उपयोग करके किया गया है। हम सटीकता के लिए प्रयासरत हैं, लेकिन कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियाँ या असत्यताएं हो सकती हैं। मूल दस्तावेज़ अपनी मूल भाषा में अधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सलाह दी जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं।