Summary
The HTML select (<select>) element represents a control that presents a menu of options. The options within the menu are represented by elements, which can be grouped by <option> elements. Options can be pre-selected for the user.<optgroup>
Usage content
| Content categories | flow content, phrasing content, interactive content, listed, labelable, resettable, and submittable form-associated element |
| Permitted content | Zero or more <option> or <optgroup> elements. |
| Tag omission | none, both the start tag and the end tag are mandatory |
| Permitted parent elements | any element that accepts phrasing content |
Attributes
This element includes the global attributes.
autofocusHTML5- This attribute lets you specify that a form control should have input focus when the page loads, unless the user overrides it, for example by typing in a different control. Only one form element in a document can have the
autofocusattribute, which is a Boolean. disabled- This Boolean attribute indicates that the user cannot interact with the control. If this attribute is not specified, the control inherits its setting from the containing element, for example
fieldset; if there is no containing element with thedisabledattribute set, then the control is enabled. formHTML5- The form element that the select element is associated with (its "form owner"). If this attribute is specified, its value must be the ID of a form element in the same document. This enables you to place select elements anywhere within a document, not just as descendants of their form elements.
multiple- This Boolean attribute indicates that multiple options can be selected in the list. If it is not specified, then only one option can be selected at a time.
name- The name of the control.
requiredHTML5- A Boolean attribute indicating that an option with a non-empty string value must be selected.
size- If the control is presented as a scrolled list box, this attribute represents the number of rows in the list that should be visible at one time. Browsers are not required to present a select element as a scrolled list box. The default value is 0.
DOM Interface
This element implements the HTMLSelectElement interface.
Examples
<!-- The second value will be selected initially --> <select name="select"> <option value="value1">Value 1</option> <option value="value2" selected>Value 2</option> <option value="value3">Value 3</option> </select>
Result
Notes
The content of this element is static and not editable.
The following is an example of how to simulate a select list with editable options, but be warned that screen readers and assistive devices will not interpret the form correctly; this example would be invalid HTML if the correct elements were used:
This is an example of an editable select through a <fieldset> of radioboxes and textboxes (written in pure CSS, without JavaScript),
Specifications
| Specification | Status | Comments |
|---|---|---|
| HTML5 The definition of '<select>' in that specification. |
Recommendation | |
| HTML 4.01 Specification The definition of '<select>' in that specification. |
Recommendation |
Browser compatibility
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Basic support | 1.0 | 1.0 (1.7 or earlier) [3] | (Yes) | (Yes) | (Yes) |
required attribute |
(Yes) | 4.0 (2.0) | 10 | (Yes) | (Yes) |
| Feature | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|
| Basic support | (Yes) [1] | 1.0 (1.0) [2] | (Yes) | (Yes) | (Yes) |
required attribute |
(Yes) | 4.0 (2.0) | No support | (Yes) | (Yes) |
[1] In the Browser app for Android 4.1 (and possibly later versions), there is a bug where the menu indicator triangle on the side of a <select> will not be displayed if a background, border, or border-radius style is applied to the <select>.
[2] Firefox for Android, by default, sets a background-image gradient on all <select multiple> elements. This can be disabled using background-image: none.
[3] Historically, Firefox has allowed keyboard and mouse events to bubble up from the <option> element to the parent <select> element. This doesn't happen in Chrome, however, although this behavior is inconsistent across many browsers. For better Web compatibility (and for technical reasons), when Firefox is in multi-process mode and the <select> element is displayed as a drop-down list. The behavior is unchanged if the <select> is presented inline and it has either the multiple attribute defined or a size attribute set to more than 1. Rather than watching <option> elements for events, you should watch for change events on <select>. See bug 1090602 for details.
Chrome and Safari both ignore border-radius on <select> elements unless -webkit-appearance is overridden to an appropriate value.
See also
- Other form-related elements:
<form>,<legend>,<label>,<button>,<option>,<datalist>,<optgroup>,<fieldset>,<textarea>,<keygen>,<input>,<output>,<progress>and<meter>.