Student: Majharul Islam | ID: 232002256 | Date: October 2025
HTML forms are used to collect user input and send it to a server for processing. They contain various input elements like text fields, buttons, checkboxes, and more.
| Element | Purpose | Description |
|---|---|---|
| <form> | Container | Defines the form structure |
| <input> | Input Field | Various input types (text, email, etc.) |
| <label> | Label | Associates text with form controls |
| <select> | Dropdown | Creates dropdown selection lists |
| <textarea> | Text Area | Multi-line text input |
| <button> | Button | Clickable button element |
| <fieldset> | Grouping | Groups related form elements |
| <legend> | Caption | Provides caption for fieldset |
| Attribute | Description | Example |
|---|---|---|
| action | Where to send form data | action="submit.php" |
| method | HTTP method (GET/POST) | method="POST" |
| enctype | How form data is encoded | enctype="multipart/form-data" |
| name | Form identifier | name="contact-form" |
| id | Unique form identifier | id="registration-form" |
| target | Where to display response | target="_blank" |
| autocomplete | Browser autocomplete behavior | autocomplete="off" |
| novalidate | Disable form validation | novalidate |
<input type="text"
name="username"
placeholder="Enter your name"
value="John Doe">
<input type="email"
name="email"
placeholder="Enter your email"
required>
<input type="password"
name="password"
placeholder="Enter password">
<input type="number"
name="age"
min="1"
max="120"
step="1">
<input type="date"
name="birthdate"
min="1900-01-01"
max="2025-12-31">
<input type="time"
name="appointment-time">
<input type="color"
name="theme-color"
value="#27ae60">
<input type="range"
name="volume"
min="0"
max="100"
value="50">
| Type | Description | Example |
|---|---|---|
| text | Single-line text input | <input type="text"> |
| Email address input | <input type="email"> | |
| password | Password input (hidden) | <input type="password"> |
| number | Numeric input | <input type="number"> |
| tel | Telephone number input | <input type="tel"> |
| url | URL input | <input type="url"> |
| search | Search input | <input type="search"> |
| date | Date picker | <input type="date"> |
| time | Time picker | <input type="time"> |
| datetime-local | Local date and time | <input type="datetime-local"> |
| month | Month picker | <input type="month"> |
| week | Week picker | <input type="week"> |
| color | Color picker | <input type="color"> |
| range | Slider input | <input type="range"> |
| file | File upload | <input type="file"> |
| hidden | Hidden input | <input type="hidden"> |
| submit | Submit button | <input type="submit"> |
| reset | Reset button | <input type="reset"> |
| button | Generic button | <input type="button"> |
| checkbox | Checkbox input | <input type="checkbox"> |
| radio | Radio button | <input type="radio"> |
<select name="department" required>
<option value="">Select Department</option>
<option value="cse">Computer Science & Engineering</option>
<option value="eee">Electrical & Electronic Engineering</option>
<option value="bba">Business Administration</option>
<option value="llb">Law</option>
</select>
<select name="interests" multiple size="4">
<option value="web-dev">Web Development</option>
<option value="mobile-dev">Mobile Development</option>
<option value="data-science">Data Science</option>
<option value="ai-ml">AI & Machine Learning</option>
<option value="cybersecurity">Cybersecurity</option>
</select>
<textarea name="message"
rows="4"
cols="50"
placeholder="Enter your message here..."
maxlength="500"></textarea>
| Attribute | Description | Example |
|---|---|---|
| required | Field is mandatory | <input required> |
| min | Minimum value | <input type="number" min="1"> |
| max | Maximum value | <input type="number" max="100"> |
| minlength | Minimum character length | <input minlength="3"> |
| maxlength | Maximum character length | <input maxlength="50"> |
| pattern | Regular expression pattern | <input pattern="[0-9]{10}"> |
| step | Step value for numbers | <input type="number" step="0.5"> |
<form>
<input type="email"
placeholder="Email (required)"
required>
<input type="number"
placeholder="Age (1-120)"
min="1"
max="120"
required>
<input type="text"
placeholder="Phone (10 digits)"
pattern="[0-9]{10}"
required>
<input type="password"
placeholder="Password (min 8 chars)"
minlength="8"
required>
</form>
<form action="register.php" method="POST" enctype="multipart/form-data">
<fieldset>
<legend>Personal Information</legend>
<label for="fullname">Full Name:</label>
<input type="text" id="fullname" name="fullname" required>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
<label for="phone">Phone:</label>
<input type="tel" id="phone" name="phone" pattern="[0-9]{10}">
<label for="dob">Date of Birth:</label>
<input type="date" id="dob" name="dob">
<label>Gender:</label>
<input type="radio" id="male" name="gender" value="male">
<label for="male">Male</label>
<input type="radio" id="female" name="gender" value="female">
<label for="female">Female</label>
</fieldset>
<fieldset>
<legend>Academic Information</legend>
<label for="student_id">Student ID:</label>
<input type="text" id="student_id" name="student_id" required>
<label for="department">Department:</label>
<select id="department" name="department" required>
<option value="">Select Department</option>
<option value="cse">Computer Science & Engineering</option>
<option value="eee">Electrical & Electronic Engineering</option>
<option value="bba">Business Administration</option>
</select>
<label for="photo">Profile Photo:</label>
<input type="file" id="photo" name="photo" accept="image/*">
</fieldset>
<fieldset>
<legend>Additional Information</legend>
<label for="address">Address:</label>
<textarea id="address" name="address" rows="4"></textarea>
<input type="checkbox" id="terms" name="terms" required>
<label for="terms">I accept the terms and conditions</label>
<input type="checkbox" id="newsletter" name="newsletter">
<label for="newsletter">Subscribe to newsletter</label>
</fieldset>
<button type="submit">Register</button>
<button type="reset">Reset Form</button>
</form>
/* Professional Form Styling */
form {
max-width: 600px;
margin: 0 auto;
padding: 20px;
background: #f8f9fa;
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
}
fieldset {
border: 2px solid #27ae60;
border-radius: 8px;
padding: 20px;
margin: 20px 0;
background: white;
}
legend {
font-weight: bold;
color: #27ae60;
padding: 0 10px;
font-size: 1.1em;
}
label {
display: block;
margin: 10px 0 5px 0;
font-weight: bold;
color: #2c3e50;
}
input[type="text"],
input[type="email"],
input[type="password"],
input[type="tel"],
input[type="number"],
input[type="date"],
select,
textarea {
width: 100%;
padding: 10px;
border: 2px solid #ddd;
border-radius: 4px;
font-size: 16px;
transition: border-color 0.3s ease;
}
input[type="text"]:focus,
input[type="email"]:focus,
input[type="password"]:focus,
input[type="tel"]:focus,
input[type="number"]:focus,
input[type="date"]:focus,
select:focus,
textarea:focus {
outline: none;
border-color: #27ae60;
box-shadow: 0 0 5px rgba(39, 174, 96, 0.3);
}
input[type="radio"],
input[type="checkbox"] {
margin-right: 8px;
}
button {
background: linear-gradient(135deg, #27ae60 0%, #2ecc71 100%);
color: white;
padding: 12px 24px;
border: none;
border-radius: 4px;
font-size: 16px;
cursor: pointer;
margin: 10px 5px;
transition: transform 0.3s ease;
}
button:hover {
transform: translateY(-2px);
}
button[type="reset"] {
background: linear-gradient(135deg, #e74c3c 0%, #c0392b 100%);
}
<form>
<fieldset>
<legend>Contact Information</legend>
<div>
<label for="name">Full Name <span aria-label="required">*</span></label>
<input type="text"
id="name"
name="name"
required
aria-describedby="name-error"
aria-required="true">
<div id="name-error" role="alert"></div>
</div>
<div>
<label for="email">Email Address <span aria-label="required">*</span></label>
<input type="email"
id="email"
name="email"
required
aria-describedby="email-help email-error"
aria-required="true">
<div id="email-help">We'll never share your email</div>
<div id="email-error" role="alert"></div>
</div>
<fieldset>
<legend>Preferred Contact Method</legend>
<input type="radio" id="phone-contact" name="contact" value="phone">
<label for="phone-contact">Phone</label>
<input type="radio" id="email-contact" name="contact" value="email">
<label for="email-contact">Email</label>
</fieldset>
</fieldset>
</form>