|
1 | | -# WebTech-LabTask2-registrationForm |
| 1 | +# WebTech-LabTask2 - Job Application Form |
| 2 | + |
| 3 | +## 📋 Lab Requirements |
| 4 | + |
| 5 | +### Requirements: |
| 6 | + |
| 7 | +#### 1. HTML Form: |
| 8 | + |
| 9 | +Create a job application form based on the provided sample design |
| 10 | +Include fields for: |
| 11 | + |
| 12 | +- Name |
| 13 | +- Email |
| 14 | +- Phone |
| 15 | +- Password (for account creation) |
| 16 | +- Experience Level (dropdown) |
| 17 | +- Expected Salary |
| 18 | +- Terms & conditions checkbox |
| 19 | + |
| 20 | +#### 2. CSS: |
| 21 | + |
| 22 | +- Include styles for focus states and validation feedback |
| 23 | +- Create classes for highlighting focused fields and validation states |
| 24 | +- Use a professional color scheme suitable for job applications |
| 25 | +- Style the form attractively with a professional theme |
| 26 | + |
| 27 | +#### 3. JavaScript Validation: |
| 28 | + |
| 29 | +- All fields must be filled |
| 30 | +- Name: Minimum 3 letters |
| 31 | +- Email: Must be a valid email format |
| 32 | +- Phone: Exactly 11 digits |
| 33 | +- Password: Must contain at least one uppercase, one lowercase, one digit |
| 34 | +- Experience Level: Must select one option from dropdown |
| 35 | + - Entry Level (0-2 years) |
| 36 | + - Mid Level (3-5 years) |
| 37 | + - Senior Level (6-10 years) |
| 38 | + - Executive (10+ years) |
| 39 | +- Expected Salary: Must be a positive number |
| 40 | +- Show validation errors using `alert()` events |
| 41 | + |
| 42 | +#### 4. JavaScript DOM Manipulation: |
| 43 | + |
| 44 | +- **Focus Highlighting**: Use `addEventListener` to add a CSS class that highlights the focused input field with a distinct border color or background |
| 45 | +- **Real-time Validation Feedback**: Use `addEventListener` to add/remove CSS classes that show validation status (valid/invalid) as the user types. Highlight in red if a field has errors and doesn't pass validation. |
| 46 | + |
| 47 | +### Folder Structure: |
| 48 | + |
| 49 | +``` |
| 50 | +Mid Lab Task 3/ |
| 51 | +├── View/ |
| 52 | +│ └── task_3_form.html |
| 53 | +├── CSS/ |
| 54 | +│ └── task_3_style.css |
| 55 | +└── JS/ |
| 56 | + └── task_3_valid.js |
| 57 | +``` |
| 58 | + |
| 59 | +### Validation Rules Summary: |
| 60 | + |
| 61 | +1. Name: At least 3 characters, letters only |
| 62 | +2. Email: Valid email format |
| 63 | +3. Phone: Exactly 11 digits |
| 64 | +4. Password: At least 8 characters with uppercase, lowercase, and digit |
| 65 | +5. Experience Level: One option must be selected |
| 66 | +6. Expected Salary: Must be a positive number |
| 67 | +7. Terms & Conditions: Must be checked |
| 68 | + |
| 69 | +### Time Limit: |
| 70 | + |
| 71 | +2 hours |
| 72 | + |
| 73 | +### Submission: |
| 74 | + |
| 75 | +- Push your completed work to GitHub |
| 76 | +- Create a new repository named 'WT Lab Task 3' |
| 77 | +- Show all git commands from repo initialization to pushing |
| 78 | + |
| 79 | +### Reference |
| 80 | + |
| 81 | + |
| 82 | +*Main Form View* |
| 83 | + |
| 84 | + |
| 85 | + |
| 86 | + |
| 87 | +*Focus Highlighting* |
| 88 | + |
| 89 | + |
| 90 | + |
| 91 | + |
| 92 | +*Validation Failed States* |
| 93 | + |
| 94 | + |
| 95 | + |
| 96 | +--- |
| 97 | + |
| 98 | + |
| 99 | +## 📋 Project Overview |
| 100 | + |
| 101 | +This project implements a comprehensive job application form with advanced JavaScript validation, real-time feedback, and professional styling. The form includes client-side validation, focus highlighting, and dynamic UI feedback to enhance user experience. |
| 102 | + |
| 103 | +### Live: https://sagarbiswas-multihat.github.io/WebTech-LabTask2-registrationForm/ |
| 104 | + |
| 105 | +## 🎯 Project Requirements |
| 106 | + |
| 107 | +### HTML Form Features |
| 108 | + |
| 109 | +- ✅ Name input field |
| 110 | +- ✅ Email input field |
| 111 | +- ✅ Phone number input field |
| 112 | +- ✅ Password input field (for account creation) |
| 113 | +- ✅ Experience Level dropdown with 4 options |
| 114 | +- ✅ Expected Salary input field |
| 115 | +- ✅ Terms & Conditions checkbox |
| 116 | +- ✅ Professional styling and layout |
| 117 | + |
| 118 | +### CSS Styling Features |
| 119 | + |
| 120 | +- ✅ Professional color scheme suitable for job applications |
| 121 | +- ✅ Focus state highlighting with distinct visual feedback |
| 122 | +- ✅ Validation state classes (valid/invalid) |
| 123 | +- ✅ Responsive form container with gradient background |
| 124 | +- ✅ Modern border-radius and shadow effects |
| 125 | +- ✅ Hover effects on submit button |
| 126 | + |
| 127 | +### JavaScript Validation Rules |
| 128 | + |
| 129 | +- ✅ **Name**: Minimum 3 characters, letters and spaces only |
| 130 | +- ✅ **Email**: Valid email format validation |
| 131 | +- ✅ **Phone**: Exactly 11 digits |
| 132 | +- ✅ **Password**: Minimum 8 characters with uppercase, lowercase, and digit |
| 133 | +- ✅ **Experience Level**: Must select one option from dropdown |
| 134 | +- ✅ **Expected Salary**: Must be a positive number |
| 135 | +- ✅ **Terms & Conditions**: Must be checked |
| 136 | +- ✅ Real-time validation feedback as user types |
| 137 | +- ✅ Form submission validation with alert messages |
| 138 | + |
| 139 | +### JavaScript DOM Manipulation Features |
| 140 | + |
| 141 | +- ✅ Focus highlighting using `addEventListener` |
| 142 | +- ✅ Real-time validation feedback with CSS class manipulation |
| 143 | +- ✅ Dynamic border colors and backgrounds for validation states |
| 144 | +- ✅ Event-driven validation on input, change, and submit events |
| 145 | + |
| 146 | +## 📁 Project Structure |
| 147 | + |
| 148 | +``` |
| 149 | +MID_LAB/ |
| 150 | +├── View/ |
| 151 | +│ └── task_3_form.html # Main HTML form |
| 152 | +├── CSS/ |
| 153 | +│ └── task_3_style.css # Styling and validation classes |
| 154 | +├── JS/ |
| 155 | +│ └── task_3_valid.js # Validation logic and DOM manipulation |
| 156 | +└── README.md # Project documentation |
| 157 | +``` |
| 158 | + |
| 159 | +## 🚀 Features |
| 160 | + |
| 161 | +### 1. Advanced Form Validation |
| 162 | + |
| 163 | +- **Real-time validation**: Provides immediate feedback as users type |
| 164 | +- **Pattern matching**: Uses regex for robust input validation |
| 165 | +- **Visual feedback**: Color-coded validation states (green for valid, red for invalid) |
| 166 | +- **Error accumulation**: Collects all validation errors for comprehensive feedback |
| 167 | + |
| 168 | +### 2. User Experience Enhancements |
| 169 | + |
| 170 | +- **Focus highlighting**: Focused fields get distinctive styling |
| 171 | +- **Professional design**: Modern gradient backgrounds and clean typography |
| 172 | +- **Responsive layout**: Form adapts to different screen sizes |
| 173 | +- **Intuitive feedback**: Clear visual indicators for form state |
| 174 | + |
| 175 | +### 3. Technical Implementation |
| 176 | + |
| 177 | +- **Event-driven architecture**: Uses addEventListener for all interactions |
| 178 | +- **Modular validation**: Separate validation functions for each field |
| 179 | +- **CSS class manipulation**: Dynamic styling based on validation state |
| 180 | +- **Form submission handling**: Prevents submission with validation errors |
| 181 | + |
| 182 | +## 🎨 Design Elements |
| 183 | + |
| 184 | +### Color Scheme |
| 185 | + |
| 186 | +- **Primary**: Blue gradient (#2563eb to #1e40af) |
| 187 | +- **Success**: Green (#10b981) for valid inputs |
| 188 | +- **Error**: Red (#ef4444) for invalid inputs |
| 189 | +- **Focus**: Bright green (#15ff00) for focused fields |
| 190 | +- **Background**: White (#fff) form container on gradient background |
| 191 | + |
| 192 | +### Typography |
| 193 | + |
| 194 | +- **Font Family**: Segoe UI for modern, clean appearance |
| 195 | +- **Responsive sizing**: Appropriate font sizes for different elements |
| 196 | +- **Color hierarchy**: Dark colors for primary text, blue for headings |
| 197 | + |
| 198 | +## 🔧 Technical Specifications |
| 199 | + |
| 200 | +### Validation Patterns |
| 201 | + |
| 202 | +```javascript |
| 203 | +// Name: Letters and spaces, minimum 3 characters |
| 204 | +/^[A-Za-z ]{3,}$/ |
| 205 | + |
| 206 | +// Email: Standard email format |
| 207 | +/^[\w.-]+@[\w-]+\.[A-Za-z]{2,}$/ |
| 208 | + |
| 209 | +// Phone: Exactly 11 digits |
| 210 | +/^\d{11}$/ |
| 211 | + |
| 212 | +// Password: 8+ chars with uppercase, lowercase, and digit |
| 213 | +/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$/ |
| 214 | +``` |
| 215 | + |
| 216 | +### Experience Level Options |
| 217 | + |
| 218 | +1. **Entry Level** (0-2 years) |
| 219 | +2. **Mid Level** (3-5 years) |
| 220 | +3. **Senior Level** (6-10 years) |
| 221 | +4. **Executive** (10+ years) |
| 222 | + |
| 223 | +## 🚀 Getting Started |
| 224 | + |
| 225 | +### Prerequisites |
| 226 | + |
| 227 | +- Modern web browser (Chrome, Firefox, Safari, Edge) |
| 228 | +- Basic understanding of HTML, CSS, and JavaScript |
| 229 | + |
| 230 | +### Installation & Setup |
| 231 | + |
| 232 | +1. **Clone the repository** |
| 233 | + |
| 234 | + ```bash |
| 235 | + git clone https://github.com/SagarBiswas-MultiHAT/WT_MID_LAB.git |
| 236 | + cd WT_MID_LAB |
| 237 | + ``` |
| 238 | + |
| 239 | +2. **Open the project** |
| 240 | + |
| 241 | + - Navigate to the project directory |
| 242 | + - Open `View/task_3_form.html` in your web browser |
| 243 | + - Or use a local server for best results |
| 244 | + |
| 245 | +3. **For development with local server** |
| 246 | + |
| 247 | + ```bash |
| 248 | + # Using Python |
| 249 | + python -m http.server 8000 |
| 250 | + |
| 251 | + # Using Node.js |
| 252 | + npx serve . |
| 253 | + |
| 254 | + # Using PHP (if using XAMPP) |
| 255 | + # Place in htdocs folder and access via localhost |
| 256 | + ``` |
| 257 | + |
| 258 | +## 📖 Usage Instructions |
| 259 | + |
| 260 | +1. **Fill out the form fields**: |
| 261 | + |
| 262 | + - Enter your full name (minimum 3 letters) |
| 263 | + - Provide a valid email address |
| 264 | + - Enter an 11-digit phone number |
| 265 | + - Create a secure password (8+ chars with mixed case and numbers) |
| 266 | + - Select your experience level from dropdown |
| 267 | + - Enter expected salary (positive number) |
| 268 | + - Check the terms & conditions checkbox |
| 269 | + |
| 270 | +2. **Real-time feedback**: |
| 271 | + |
| 272 | + - Fields turn green when valid |
| 273 | + - Fields turn red when invalid |
| 274 | + - Focused fields have distinctive highlighting |
| 275 | + |
| 276 | +3. **Form submission**: |
| 277 | + - Click "Apply" to submit |
| 278 | + - Any validation errors will be displayed in an alert |
| 279 | + - All fields must be valid to submit successfully |
| 280 | + |
| 281 | +## 🧪 Testing |
| 282 | + |
| 283 | +### Test Cases |
| 284 | + |
| 285 | +1. **Name Validation** |
| 286 | + |
| 287 | + - ✅ Valid: "John Doe", "Alice Smith" |
| 288 | + - ❌ Invalid: "Jo", "123", "John123" |
| 289 | + |
| 290 | +2. **Email Validation** |
| 291 | + |
| 292 | + - ✅ Valid: "user@domain.com", "test.email@company.org" |
| 293 | + - ❌ Invalid: "invalid-email", "user@", "@domain.com" |
| 294 | + |
| 295 | +3. **Phone Validation** |
| 296 | + |
| 297 | + - ✅ Valid: "01234567890" |
| 298 | + - ❌ Invalid: "123456789", "12345678901", "abc1234567" |
| 299 | + |
| 300 | +4. **Password Validation** |
| 301 | + - ✅ Valid: "Password123", "SecurePass1" |
| 302 | + - ❌ Invalid: "password", "PASSWORD", "Pass123" |
| 303 | + |
| 304 | +## 🎯 Learning Objectives Achieved |
| 305 | + |
| 306 | +- ✅ HTML form creation with various input types |
| 307 | +- ✅ CSS styling with focus states and validation feedback |
| 308 | +- ✅ JavaScript event handling and DOM manipulation |
| 309 | +- ✅ Regular expression pattern matching |
| 310 | +- ✅ Real-time form validation |
| 311 | +- ✅ User experience design principles |
| 312 | +- ✅ Professional web development practices |
| 313 | + |
| 314 | +## 🔄 Git Workflow |
| 315 | + |
| 316 | +### Repository Setup Commands |
| 317 | + |
| 318 | +```bash |
| 319 | +# Initialize repository |
| 320 | +git init |
| 321 | + |
| 322 | +# Add all files |
| 323 | +git add . |
| 324 | + |
| 325 | +# Initial commit |
| 326 | +git commit -m "Initial commit: Job application form with validation" |
| 327 | + |
| 328 | +# Add remote origin |
| 329 | +git remote add origin https://github.com/SagarBiswas-MultiHAT/WT_MID_LAB.git |
| 330 | + |
| 331 | +# Push to GitHub |
| 332 | +git push -u origin main |
| 333 | +``` |
| 334 | + |
| 335 | +### Development Workflow |
| 336 | + |
| 337 | +```bash |
| 338 | +# Check status |
| 339 | +git status |
| 340 | + |
| 341 | +# Add changes |
| 342 | +git add . |
| 343 | + |
| 344 | +# Commit changes |
| 345 | +git commit -m "Add feature: real-time validation feedback" |
| 346 | + |
| 347 | +# Push changes |
| 348 | +git push origin main |
| 349 | +``` |
| 350 | + |
| 351 | +## 📝 Code Quality Features |
| 352 | + |
| 353 | +- **Clean code structure**: Well-organized and commented |
| 354 | +- **Separation of concerns**: HTML, CSS, and JS in separate files |
| 355 | +- **Reusable functions**: Modular validation functions |
| 356 | +- **Event-driven design**: Proper event listener implementation |
| 357 | +- **Error handling**: Comprehensive validation error collection |
| 358 | + |
| 359 | +## 🎨 Future Enhancements |
| 360 | + |
| 361 | +- [ ] Add password strength indicator |
| 362 | +- [ ] Implement file upload for resume |
| 363 | +- [ ] Add form progress indicator |
| 364 | +- [ ] Include accessibility improvements (ARIA labels) |
| 365 | +- [ ] Add animation transitions for validation states |
| 366 | +- [ ] Implement form data persistence with localStorage |
| 367 | + |
| 368 | +## 👨💻 Author |
| 369 | + |
| 370 | +**Sagar Biswas** |
| 371 | + |
| 372 | +- GitHub: [@SagarBiswas-MultiHAT](https://github.com/SagarBiswas-MultiHAT) |
| 373 | +- Repository: [WT_MID_LAB](https://github.com/SagarBiswas-MultiHAT/WT_MID_LAB.git) |
| 374 | +- Course: Web Technology |
| 375 | +- Lab: Mid Lab Task 3 |
| 376 | + |
| 377 | +## 📅 Development Timeline |
| 378 | + |
| 379 | +- **Time Allocated**: 2 hours |
| 380 | +- **Completion Status**: ✅ Completed |
| 381 | +- **Key Milestones**: |
| 382 | + - HTML form structure: ✅ |
| 383 | + - CSS styling and validation classes: ✅ |
| 384 | + - JavaScript validation logic: ✅ |
| 385 | + - Real-time feedback implementation: ✅ |
| 386 | + - Testing and refinement: ✅ |
| 387 | + |
| 388 | +## 📄 License |
| 389 | + |
| 390 | +This project is created for educational purposes as part of the Web Technology course curriculum. |
| 391 | + |
| 392 | +--- |
0 commit comments