Summary of:
https://www.theodinproject.com/lessons/node-path-intermediate-html-and-css-form-basics
action
: takes a URL value where it should send its data to (backend)method
: tells the browser which HTTP request method it should use<form action="example.com/path" method="post">
<label for="first_name">First Name:</label>
<input type="text" id="first_name">
</form>
We give our inputs a label to inform users what type of data they are expected to enter.
The input we want to associate with a label needs an id
attribute with the same value as the label’s for
attribute.
<label for="first_name">First Name:</label>
<input type="text" id="first_name" placeholder="Bob...">
Use placeholder text to demonstrate how text should be entered and formatted.
<label for="first_name">First Name:</label>
<input type="text" id="first_name" name="first_name">
The name
attribute serves as a reference to the data inputted into a form control after submitting it. You can think of it as a variable name for the input. Form input should always have a name
attribute; otherwise, it will be ignored when the form is submitted.
"form": {
"age": "33",
"first_name": "John",
"last_name": "Doe"
},
Try changing the name
attributes of some of the input fields in the form and removing the attribute entirely, then submit the form again to see how the form data in the response changes.
<label for="user_email">Email Address:</label>
<input type="email" id="user_email" name="email" placeholder="you@example.com">
<label for="user_password">Password:</label>
<input type="password" id="user_password" name="password">
<label for="amount">Amount:</label>
<input type="number" id="amount" name="amount">
<label for="dob">Date of Birth:</label>
<input type="date" id="dob" name="dob">
email inputs
: different keyboard with @ symbol on mobile devices / validation of a correctly formatted email address
password inputs
: secured display
number input
: only accepts number values
date input
: renders a simple date picker calendar
<textarea>Some initial content</textarea>
<textarea rows="20" cols="60"></textarea>
An input box that can accept text (ex: comments, reviews)
select dropdown
<select name="fashion">
<optgroup label="Clothing">
<option value="t_shirt">T-Shirts</option>
<option value="sweater">Sweaters</option>
<option value="coats">Coats</option>
</optgroup>
<optgroup label="Foot Wear">
<option value="sneakers">Sneakers</option>
<option value="boots">Boots</option>
<option value="sandals">Sandals</option>
</optgroup>
</select>
value
will be sent to the server when the form is submitted.
for 5 or fewer options
<h1>Ticket Type</h1>
<div>
<input type="radio" id="child" name="ticket_type" value="child">
<label for="child">Child</label>
</div>
<div>
<input type="radio" id="adult" name="ticket_type" value="adult" checked>
<label for="adult">Adult</label>
</div>
<div>
<input type="radio" id="senior" name="ticket_type" value="senior">
<label for="senior">Senior</label>
</div>
We can set the default selected radio button by adding the checked
attribute to it
multiple options
<h1>Pizza Toppings</h1>
<div>
<input type="checkbox" id="sausage" name="topping" value="sausage">
<label for="sausage">Sausage</label>
</div>
<div>
<input type="checkbox" id="onions" name="topping" value="onions">
<label for="onions">Onions</label>
</div>
<div>
<input type="checkbox" id="pepperoni" name="topping" value="pepperoni" checked>
<label for="pepperoni">Pepperoni</label>
</div>
<div>
<input type="checkbox" id="mushrooms" name="topping" value="mushrooms">
<label for="mushrooms">Mushrooms</label>
</div>
<button type="submit">Submit</button>
<button type="reset">Reset</button>
<!-- clears all data in the form -->
<button type="button">Click to Toggle</button>
<!-- generic button -->
Note: It is important to remember that a button within a form with the type
value of submit (which happens to be the default value) will always try to make a new request and submit data back to the server. Hence, for buttons that are used within a form for different purposes other than submitting the data, the type
attribute should always be specified to avoid unwanted effects of submitting a form.
a container for a group of related form inputs
<fieldset>
<label for="first_name">First Name</label>
<input type="text" id="first_name" name="first_name">
<label for="last_name">Last Name</label>
<input type="text" id="last_name" name="last_name">
</fieldset>
a heading or caption for a inputs’ group
<fieldset>
<legend>Contact Details</legend>
<label for="name">Name:</label>
<input type="text" id="name" name="name">
<label for="phone_number">Phone Number:</label>
<input type="tel" id="phone_number" name="phone_number">
<label for="email">Email:</label>
<input type="email" id="email" name="email">
</fieldset>
<fieldset>
<legend>Delivery Details</legend>
<label for="street_address">Street Address:</label>
<input type="text" id="street_address" name="street_address">
<label for="city">City:</label>
<input type="text" id="city" name="city">
<label for="zip_code">Zip Code:</label>
<input type="text" id="zip_code" name="zip_code">
</fieldset>