Forms of HTML
Forms of HTML
1 Introduction to forms
An HTML form is a section of a document containing normal content, markup,
special elements called controls (checkboxes, radio buttons, menus, etc.), and
labels on those controls. Users generally "complete" a form by modifying its
controls (entering text, selecting menu items, etc.), before submitting the form
to an agent for processing (e.g., to a Web server, to a mail server, etc.)
Here's a simple form that includes labels, radio buttons, and push buttons
(reset the form or submit it):
<FORM action="http://somesite.com/prog/adduser" method="post">
<P>
<LABEL for="firstname">First name: </LABEL>
<INPUT type="text" id="firstname"><BR>
<LABEL for="lastname">Last name: </LABEL>
<INPUT type="text" id="lastname"><BR>
<LABEL for="email">email: </LABEL>
<INPUT type="text" id="email"><BR>
<INPUT type="radio" name="sex" value="Male"> Male<BR>
<INPUT type="radio" name="sex" value="Female"> Female<BR>
<INPUT type="submit" value="Send"> <INPUT type="reset">
</P>
</FORM>
Note. This specification includes more detailed information about forms in the
subsections on form display issues.
17.2 Controls
Users interact with forms through named controls.
A control's "control name" is given by its name attribute. The scope of
the name attribute for a control within a FORM element is the FORMelement.
Each control has both an initial value and a current value, both of which are
character strings. Please consult the definition of each control for information
about initial values and possible constraints on values imposed by the control.
In general, a control's "initial value" may be specified with the control
element's value attribute. However, the initial value of a TEXTAREA element
is given by its contents, and the initial value of an OBJECT element in a form is
determined by the object implementation (i.e., it lies outside the scope of this
specification).
The control's "current value" is first set to the initial value. Thereafter, the
control's current value may be modified through user interaction and scripts.
A control's initial value does not change. Thus, when a form is reset, each
control's current value is reset to its initial value. If a control does not have an
initial value, the effect of a form reset on that control is undefined.
When a form is submitted for processing, some controls have their name
paired with their current value and these pairs are submittedwith the form.
Those controls for which name/value pairs are submitted are called successful
controls.
Authors create buttons with the BUTTON element or the INPUT element.
Please consult the definitions of these elements for details about
specifying different button types.
Note. Authors should note that the BUTTON element offers richer
rendering capabilities than the INPUT element.
checkboxes
Checkboxes (and radio buttons) are on/off switches that may be toggled
by the user. A switch is "on" when the control
Authors may create controls that are not rendered but whose values are
submitted with a form. Authors generally use this control type to store
information between client/server exchanges that would otherwise be
lost due to the stateless nature of HTTP (see[RFC2616]).
The INPUT element is used to create a hidden control.
object controls
Authors may insert generic objects in forms such that associated values
are submitted along with other controls. Authors create object controls
with the OBJECT element.
The elements used to create controls generally appear inside a FORM element,
but may also appear outside of a FORM element declaration when they are
used to build user interfaces. This is discussed in the section on intrinsic
events. Note that controls outside a form cannot be successful controls.
This attribute specifies the content type used to submit the form to the
server (when the value of method is "post"). The default value for this
attribute is "application/x-www-form-urlencoded". The
value "multipart/form-data" should be used in combination with
the INPUT element, type="file".
accept-charset = charset list [CI]
This attribute specifies the list of character encodings for input data that
is accepted by the server processing this form. The value is a spaceand/or comma-delimited list of charset values. The client must interpret
this list as an exclusive-or list, i.e., the server is able to accept any
single character encoding per entity received.
The default value for this attribute is the reserved string "UNKNOWN".
User agents may interpret this value as the character encoding that was
used to transmit the document containing this FORM element.
accept = content-type-list [CI]
This attribute specifies a comma-separated list of content types that a
server processing this form will handle correctly. User agents may use
this information to filter out non-conforming files when prompting a user
to select files to be sent to the server (cf. the INPUT element
when type="file").
name = cdata [CI]
This attribute names the element so that it may be referred to from style
sheets or scripts. Note. This attribute has been included for backwards
compatibility. Applications should use the id attribute to identify
elements.
Attributes defined elsewhere
A form can contain text and markup (paragraphs, lists, etc.) in addition to form
controls.
The following example shows a form that is to be processed by the "adduser"
program when submitted. The form will be sent to the program using the
HTTP "post" method.
<FORM action="http://somesite.com/prog/adduser" method="post">
...form contents...
</FORM>
Please consult the section on form submission for information about how user
agents must prepare form data for servers and how user agents should
handle expected responses.
Note. Further discussion on the behavior of servers that receive form data is
beyond the scope of this specification.