<SELECT...>

The Select element allows the user to chose one of a set of alternatives described by textual labels. Every alternative is represented by the <OPTION> element.

Attributes are:

MULTIPLE
The MULTIPLE attribute is needed when users are allowed to make several selections, e.g.

<SELECT MULTIPLE>

NAME
Specifies the name that will submitted as a name/value pair, or the name by which the element can be referred to in a script function.

SIZE
Specifies the number of visible items. If this is greater than one, then the resulting form control will be a list.

ACCESSKEY
The ACCESSKEY attribute can be used to specify a shortcut key for the <SELECT> drop down list (activated by pressing 'Alt' and the ACCESSKEY together - like standard Windows applications menu shortcuts). The ACCESSKEY setting does not have to be a character in the <SELECT> element, which is not modified in any way to reflect that an ACCESSKEY has been defined.

ALIGN="Alignment"
The ALIGN attribute can be used to set the alignment for the drop-down list. It accepts the standard ALIGN attribute values of absbottom, absmiddle, baseline, bottom, left, middle, right, texttop and top.

TABINDEX
The TABINDEX attribute can be used to set a tabbing order for the user to navigate around the main <FORM>. For example, if <FORM> elements have TABINDEX properties set, when the user is focused on an element, pressing the 'Tab' key will pass the focus to the element with the next highest TABINDEX property.

TITLE="informational ToolTip"
The Internet Explorer 4.0 (and above) specific TITLE attribute is used for informational purposes. If present, the value of the TITLE attribute is presented as a ToolTip when the users mouse hovers over the <SELECT> section.

LANG="language setting"
The LANG attribute can be used to specify what language the <SELECT> element is using. It accepts any valid ISO standard language abbreviation (for example "en" for English, "de" for German etc.) For more details, see the Document Localisation section for more details.

LANGUAGE="Scripting language"
The LANGUAGE attribute can be used to expressly specify which scripting language Internet Explorer 4.0 uses to interpret any scripting information used in the <SELECT> element. It can accept values of vbscript, vbs, javascript or jscript. The first two specify the scripting language as Visual Basic Script, the latter two specify it as using Javascript (the default scripting language used if no LANGUAGE attribute is set.

CLASS="Style Sheet class name"
The CLASS attribute is used to specify the <SELECT> element as using a particular style sheet class. See the Style Sheets topic for details.

STYLE="In line style setting"
As well as using previously defined style sheet settings, the <SELECT> element can have in-line stylings attached to it. See the Style Sheets topic for details.

ID="Unique element identifier"
The ID attribute can be used to either reference a unique style sheet identifier, or to provide a unique name for the <SELECT> element for scripting purposes. Any <SELECT> element with an ID attribute can be directly manipulated in script by referencing its ID attribute, rather than working through the All collection to determine the element. See the Scripting introduction topic for more information.

DATAFLD="Column Name"
The DATAFLD attribute can be used to specify a data column name from the Data source (see DATASRC) that the <SELECT> is bound to. For more information on the DATAFLD attribute, see the Data Binding topic.

DATASRC="Data Source"
The DATASRC attribute can be used to specify a data source that the <SELECT> is bound to. For more information on the DATASRC attribute, see the Data Binding topic.

DISABLED
The DISABLED flag (as with other form elements can be set to prevent the drop-down list from accepting the users focus.

The <SELECT> element is typically rendered as a pull down or pop-up list. For example (from the previous form fragment):

<SELECT NAME="Choice">
<OPTION>Outstanding
<OPTION>Very good
<OPTION>Good
<OPTION>Average
<OPTION>Below Average
<OPTION>Awful
<OPTION SELECTED>My response would be "indecent" under the CDA Act.
</SELECT>


Every <SELECT> element in a document is an object that can be manipulated through scripting. Scripting of the <SELECT> element is supported by both browsers (Netscape supports scripting through the Forms collection/array and Elements Object/Array. See those topics for details of Netscape support for scripting the <SELECT> element.)

<SELECT...> Properties
The <SELECT...> element/object supports all of the standard Dynamic HTML properties (i.e. className, document, id, innerHTML, innerText, isTextEdit, lang, language, offsetHeight, offsetLeft, offsetParent, offsetTop, offsetWidth, outerHTML, outerText, parentElement, parentTextEdit, sourceIndex, style, tagName and title). Details of these can be found in the standard Dynamic HTML properties topics.
The <SELECT> element also has the following properties:

accessKey
The accessKey property directly reflects the setting of the ACCESSKEY attribute (see above).

dataFld
The dataFld property directly reflects the setting of the DATAFLD attribute (see above).

dataSrc
The dataSrc property directly reflects the setting of the DATASRC attribute (see above).

disabled
The disabled property has a boolean value representing whether (disabled=true) or not (disabled=false) the DISABLED flag has been set for the <SELECT> element.

form
The form property contains a reference to the form on which the particular <INPUT> element resides.

length
The length property returns a value representing the number of <OPTION> choices that are present in the <SELECT> element. It is read-writable, meaning that the number of choices can be shrunk/increased through scripting.

multiple
The multiple property has a boolean value (true or false) representing whether or not the MULTIPLE attribute flag has been set for the <SELECT> box.

name
The name property reflects the value of the NAME attribute.

recordNumber
The recordNumber property represents the number of the record, from the recordset that provided data for the element. For more information on data-aware HTML elements and data binding, see the Data Binding topic.

selectedIndex
The selectedIndex property returns (or can set) the index of the selected option in the <SELECT> element. The <OPTION> elements contained in the <SELECT> element are all referenced by their index number, starting at 0 for the first <OPTION> and incrementing in the order they appear in the document.

size
The size property directly reflects the value of the SIZE attribute (see above).

tabIndex
The tabIndex property reflects (or sets) the value of the TABINDEX attribute, when used in <SELECT> elements.

type
The type property returns either 'select-one' or 'select-multiple' for the <SELECT> element, depending on whether the MULTIPLE flag has been set or not.

<SELECT...> Methods
The <SELECT...> element/object supports all of the standard Dynamic HTML methods (i.e. click, contains, getAttribute, insertAdjacentHTML, insertAdjacentText, removeAttribute, scrollIntoView and setAttribute). Details of these can be found in the standard Dynamic HTML Methods topics.
The <SELECT> element also supports the following methods:

add
The add method can be used to add new options to a <SELECT> element. Note that before an option can be added, its element must first be created using the createElement method of the Document Object (see that topic for details).

The add method accepts arguments of element and index, which represent the element to be added and the index (i.e. position) at which it is to be inserted into the option list. For example, an option element, created with

newOpt=document.createElement(OPTION)

can be added as the first option in a <SELECT> element (whose ID is 'selMain')

selMain.add(newOpt,0)

blur
The blur method can be used to force the users focus away from the referenced <SELECT> element, causing the onblur event (see below) to fire.

focus
The focus method can be used to force the users to focus on the referenced <SELECT> element, causing the onfocus event (see below) to fire.

item
The item method retrieves an element, or collection, from a given collection - in this case, the options collection contained within the <SELECT> element. It has the syntax:

element = Selectobject.item(index [, subindex])

where element is a reference to the returned element (or collection), Selectobject is the <SELECT> element object being referenced, index is a number or string referencing the element to retrieve from the collection and subindex is an optional parameter used when the index argument returns a collection of objects. For example, if the index property is a string value, then subindex could be a numerical value, determining which object is retrieved from the collection of elements whose name or id properties are equal to the value of the index argument.

remove
The remove method can be used to remove any option from the options contained in the <SELECT> element. It requires just the single argument of index, which should be the index of the choice to be removed.

<SELECT...> Events
The <SELECT...> element/object supports all of the standard Dynamic HTML events (i.e. onclick, ondblclick, ondragstart, onfilterchange, onhelp, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseout, onmouseover, onmouseup and onselectstart). Details of these can be found in the standard Dynamic HTML events topics.
The <SELECT> element also supports the following events:

onafterupdate
The onafterupdate event is fired after data is transferred from the element to the data provider and will only fire after the onbeforeupdate event has fired and was successful. For more information on Data Binding, see the Data Binding topic.

onbeforeupdate
onbeforeupdate fires when a data bound element loses the focus, or the current document is unloaded and will only fire if the value of the element is different to the original value that was present when the element received the users focus. Note that onbeforeupdate is a cancelable event (setting returnValue=false for the Event object), which allows the document /script author a chance to validate the new data entered by the user on the client-side, before sending the data to the data provider. For more information on Data Binding, see the Data Binding topic.

onblur
The onblur event is fired whenever the referenced <SELECT> element loses the users focus (either by the user clicking another section of the document, by 'tabbing' away, or by a script function using the blur method.

onchange
The onchangesubmitting event is fired when the user commits changes to a <SELECT> element. The event does not fire when the actual changes are made, but when the user 'commits' them, by either submitting the form, or by 'blurring' (i.e. removing focus from) the element. Any code using the onchange event is executed before the onblur event (see above), if the change is committed by the user removing the focus.

onerrorupdate
The onerrorupdate event fires when a data transfer error occurs, through some action by the user (i.e. pressing the 'Stop' button on the browser for example), but not if a script generates the transfer error. For more information on Data Binding, see the Data Binding topic.

onfocus
Whenever the <SELECT> element receives the users focus, the onfocus event is fired, causing whatever script functions that are linked to it to be executed.

onrowenter
The onrowenter event fires on the data source control when the current record has been changed, so new data is available to populate the HTML display elements that are bound to the data source. Somewhat confusingly, this will typically happen after the onrowexit event has been fired. For more information on Data Binding, see the Data Binding topic.

onrowexit
The onrowexit event is fired immediately before the data source changes the current record (i.e. when the user has requested another record, or set of records by pressing a button perhaps). Note that unlike the onafterupdate and onbeforeupdate events, onrowexit is fired by the data source, not any of the HTML elements used to display the data. Changes to the data in the HTML elements should have been transferred to the data source (with validation being taken care of in the on*update events). onrowexit will also fire if the record position is changed through scripting. For more information on Data Binding, see the Data Binding topic.