HTML Form Elements & Attributes
The HTML <form> Elements
The HTML <form>
element can contain one or more of the following form elements:
<input>
<label>
<select>
<textarea>
<button>
<fieldset>
<legend>
<datalist>
<output>
<option>
<optgroup>
The <input> Element
One of the most used form element is the <input>
element.
The <input>
element can be displayed in several ways, depending on the type
attribute.
The <label> Element
The <label>
element defines a label for several form elements.
The <label>
element is useful for screen-reader users, because the screen-reader will read out loud the label when the user focus on the input element.
The <label>
element also help users who have difficulty clicking on very small regions (such as radio buttons or checkboxes) - because when the user clicks the text within the <label>
element, it toggles the radio button/checkbox.
The for
attribute of the <label>
tag should be equal to the id
attribute of the <input>
element to bind them together.
The <select> Element
The <select>
element defines a drop-down list:
<select id="cars" name="cars">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="fiat">Fiat</option>
<option value="audi">Audi</option>
</select>
The <option> Element
<option>
elements defines an option that can be selected.By default, the first item in the drop-down list is selected.
Visible Values:
Use the size
attribute to specify the number of visible values:
To define a pre-selected option, add the selected
attribute to the option:
<select id="cars" name="cars" size="3">
<option value="volvo" selected>Volvo</option>
<option value="saab">Saab</option>
<option value="fiat">Fiat</option>
<option value="audi">Audi</option>
</select>
Allow Multiple Selections:
Use the multiple
attribute to allow the user to select more than one value:
<select id="cars" name="cars" size="4" multiple>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="fiat">Fiat</option>
<option value="audi">Audi</option>
</select>
The <textarea> Element
The <textarea>
element defines a multi-line input field (a text area):
<textarea name="message" rows="10" cols="30">
The cat was playing in the garden.
</textarea>
The <button> Element
The <button>
element defines a clickable button:
<button type="button">
The cat was playing in the garden.
</button>
The <fieldset> and <legend> Elements
The <fieldset>
element is used to group related data in a form.
The <legend>
element defines a caption for the <fieldset>
element.
<form action="/action_page.php">
<fieldset>
<legend>Personalia:</legend>
<label for="fname">First name:</label><br>
<input type="text" id="fname" name="fname" value="John"><br>
<label for="lname">Last name:</label><br>
<input type="text" id="lname" name="lname" value="Doe"><br><br>
<input type="submit" value="Submit">
</fieldset>
</form>
The <datalist> Element
The <datalist>
element specifies a list of pre-defined options for an <input>
element.
Users will see a drop-down list of the pre-defined options as they input data.
The list
attribute of the <input>
element, must refer to the id
attribute of the <datalist>
element.
<form action="/action_page.php">
<input list="browsers">
<datalist id="browsers">
<option value="Internet Explorer">
<option value="Firefox">
<option value="Chrome">
<option value="Opera">
<option value="Safari">
</datalist>
</form>
HTML Form Attributes
This chapter describes the different attributes for the HTML <form>
element.
The Action Attribute
The action
attribute defines the action to be performed when the form is submitted.
The Target Attribute
The target
attribute specifies where to display the response that is received after submitting the form.
The Method Attribute
The method
attribute specifies the HTTP method to be used when submitting the form data.
The form-data can be sent as URL variables (with method="get"
) or as HTTP post transaction (with method="post"
).
The default HTTP method when submitting form data is GET.
Notes on GET:
- Appends the form data to the URL, in name/value pairs
- NEVER use GET to send sensitive data! (the submitted form data is visible in the URL!)
- The length of a URL is limited (2048 characters)
- Useful for form submissions where a user wants to bookmark the result
- GET is good for non-secure data, like query strings in Google
Notes on POST:
- Appends the form data inside the body of the HTTP request (the submitted form data is not shown in the URL)
- POST has no size limitations, and can be used to send large amounts of data.
- Form submissions with POST cannot be bookmarked
The Autocomplete Attribute
The autocomplete
attribute specifies whether a form should have autocomplete on or off.
When autocomplete is on, the browser automatically complete values based on values that the user has entered before.
The Novalidate Attribute
The novalidate
attribute is a boolean attribute.
When present, it specifies that the form-data (input) should not be validated when submitted.