[html5] r8435 - [acgiow] (0) <input type=range multiple min=0 value='25, 75' max=100> for two-val [...]
whatwg at whatwg.org
whatwg at whatwg.org
Wed Jan 29 12:40:27 PST 2014
Author: ianh
Date: 2014-01-29 12:40:26 -0800 (Wed, 29 Jan 2014)
New Revision: 8435
Modified:
complete.html
index
source
Log:
[acgiow] (0) <input type=range multiple min=0 value='25,75' max=100> for two-valued range controls
Fixing https://www.w3.org/Bugs/Public/show_bug.cgi?id=13154
Affected topics: DOM APIs, HTML
Modified: complete.html
===================================================================
--- complete.html 2014-01-28 23:50:26 UTC (rev 8434)
+++ complete.html 2014-01-29 20:40:26 UTC (rev 8435)
@@ -298,7 +298,7 @@
<header class=head id=head><p><a href=http://www.whatwg.org/ class=logo><img width=101 src=/images/logo alt=WHATWG height=101></a></p>
<hgroup><h1 class=allcaps>HTML</h1>
- <h2 class="no-num no-toc">Living Standard — Last Updated 28 January 2014</h2>
+ <h2 class="no-num no-toc">Living Standard — Last Updated 29 January 2014</h2>
</hgroup><dl><dt><strong>Web developer edition:</strong></dt>
<dd><strong><a href=http://developers.whatwg.org/>http://developers.whatwg.org/</a></strong></dd>
<dt>Multiple-page version:</dt>
@@ -11654,12 +11654,20 @@
<a href=#concept-fe-checked title=concept-fe-checked>checkedness</a> is true, or "false" otherwise
<tr><td><code><a href=#the-input-element>input</a></code> element with a <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute in
- the <a href="#range-state-(type=range)" title=attr-input-type-range>Range</a> state
+ the <a href="#range-state-(type=range)" title=attr-input-type-range>Range</a> state and the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute not specified
<td><code title=attr-aria-role-slider>slider</code> role, with the <code title=attr-aria-valuemax>aria-valuemax</code> property set to the element's <a href=#concept-input-max title=concept-input-max>maximum</a>, the <code title=attr-aria-valuemin>aria-valuemin</code> property set to the element's <a href=#concept-input-min title=concept-input-min>minimum</a>, and the <code title=attr-aria-valuenow>aria-valuenow</code> property set to the result of applying the
<a href=#rules-for-parsing-floating-point-number-values>rules for parsing floating-point number values</a> to the element's <a href=#concept-fe-value title=concept-fe-value>value</a>, if that results in a number, or the <a href=#concept-input-value-default-range title=concept-input-value-default-range>default value</a> otherwise
<tr><td><code><a href=#the-input-element>input</a></code> element with a <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute in
+ the <a href="#range-state-(type=range)" title=attr-input-type-range>Range</a> state and the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute not specified
+
+ <td><code title=attr-aria-valuemax>aria-valuemax</code> property set to the element's <a href=#concept-input-max title=concept-input-max>maximum</a>, and the <code title=attr-aria-valuemin>aria-valuemin</code> property set to the element's <a href=#concept-input-min title=concept-input-min>minimum</a>
+
+ <!-- ARIA doesn't currently support a single element with two slider values, so leave the rest
+ undefined for now -->
+
+ <tr><td><code><a href=#the-input-element>input</a></code> element with a <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute in
the <a href="#reset-button-state-(type=reset)" title=attr-input-type-reset>Reset Button</a> state
<td><code title=attr-aria-role-button>button</code> role
@@ -38628,6 +38636,8 @@
[TreatNullAs=EmptyString] attribute DOMString <a href=#dom-input-value title=dom-input-value>value</a>;
attribute <span>Date</span>? <a href=#dom-input-valueasdate title=dom-input-valueAsDate>valueAsDate</a>;
attribute unrestricted double <a href=#dom-input-valueasnumber title=dom-input-valueAsNumber>valueAsNumber</a>;
+ attribute double <a href=#dom-input-valuelow title=dom-input-valueLow>valueLow</a>;
+ attribute double <a href=#dom-input-valuehigh title=dom-input-valueHigh>valueHigh</a>;
attribute unsigned long <a href=#dom-input-width title=dom-input-width>width</a>;
void <a href=#dom-input-stepup title=dom-input-stepUp>stepUp</a>(optional long n = 1);
@@ -38761,11 +38771,14 @@
</table><p>The <i>missing value default</i> is the <a href="#text-(type=text)-state-and-search-state-(type=search)" title=attr-input-type-text>Text</a>
state.</p>
+<!--CLEANUP--> <!-- prettify -->
<p>Which of the <code title=attr-input-accept><a href=#attr-input-accept>accept</a></code>, <code title=attr-input-alt><a href=#attr-input-alt>alt</a></code>, <code title=attr-fe-autocomplete><a href=#attr-fe-autocomplete>autocomplete</a></code>, <code title=attr-input-checked><a href=#attr-input-checked>checked</a></code>, <code title=attr-fe-dirname><a href=#attr-fe-dirname>dirname</a></code>, <code title=attr-fs-formaction><a href=#attr-fs-formaction>formaction</a></code>, <code title=attr-fs-formenctype><a href=#attr-fs-formenctype>formenctype</a></code>, <code title=attr-fs-formmethod><a href=#attr-fs-formmethod>formmethod</a></code>, <code title=attr-fs-formnovalidate><a href=#attr-fs-formnovalidate>formnovalidate</a></code>, <code title=attr-fs-formtarget><a href=#attr-fs-formtarget>formtarget</a></code>, <code title=attr-dim-height><a href=#attr-dim-height>height</a></code>, <code title=attr-fe-inputmode><a href=#attr-fe-inputmode>inputmode</a></code>, <code title=
attr-input-list><a href=#attr-input-list>list</a></code>, <code title=attr-input-max><a href=#attr-input-max>max</a></code>, <code title=attr-input-maxlength><a href=#attr-input-maxlength>maxlength</a></code>, <code title=attr-input-min><a href=#attr-input-min>min</a></code>, <code title=attr-input-minlength><a href=#attr-input-minlength>minlength</a></code>, <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code>, <code title=attr-input-pattern><a href=#attr-input-pattern>pattern</a></code>,
<code title=attr-input-placeholder><a href=#attr-input-placeholder>placeholder</a></code>, <code title=attr-input-readonly><a href=#attr-input-readonly>readonly</a></code>, <code title=attr-input-required><a href=#attr-input-required>required</a></code>,
<code title=attr-input-size><a href=#attr-input-size>size</a></code>, <code title=attr-input-src><a href=#attr-input-src>src</a></code>, <code title=attr-input-step><a href=#attr-input-step>step</a></code>, and <code title=attr-dim-width><a href=#attr-dim-width>width</a></code> content
attributes, the <code title=dom-input-checked><a href=#dom-input-checked>checked</a></code>, <code title=dom-input-files><a href=#dom-input-files>files</a></code>, <code title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
- <code title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>, and <code title=dom-input-list><a href=#dom-input-list>list</a></code> IDL attributes, the <code title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code> method, the <code title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>, <code title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>, and <code title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>, IDL attributes, the
+ <code title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>,
+ <code title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code>, and <code title=dom-input-list><a href=#dom-input-list>list</a></code> IDL attributes, the <code title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code> method, the <code title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>, <code title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>, and <code title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>, IDL attributes, the
<code title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code> and <code title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code> methods, the <code title=dom-input-stepUp><a href=#dom-input-stepup>stepUp()</a></code> and <code title=dom-input-stepDown><a href=#dom-input-stepdown>stepDown()</a></code>
methods, and the <code title=event-input-input><a href=#event-input-input>input</a></code> and <code title=event-input-change><a href=#event-input-change>change</a></code> events <dfn id=concept-input-apply title=concept-input-apply>apply</dfn> to
an <code><a href=#the-input-element>input</a></code> element depends on the state of its <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute. The subsections that define each type also clearly
@@ -39226,7 +39239,7 @@
<!-- <td class="no"> · Time -->
<td class=no> · <!-- Local Date and Time -->
<td class=no> · <!-- Number -->
- <td class=no> · <!-- Range -->
+ <td class=yes> Yes <!-- Range -->
<td class=no> · <!-- Color -->
<td class=no> · <!-- Checkbox -->
<!-- <td class="no"> · Radio Button -->
@@ -39540,7 +39553,7 @@
<!-- <td class="yes"> Yes Time -->
<td class=yes> Yes <!-- Local Date and Time -->
<td class=yes> Yes <!-- Number -->
- <td class=yes> Yes <!-- Range -->
+ <td class=yes> Yes* <!-- Range -->
<td class=no> · <!-- Color -->
<td class=no> · <!-- Checkbox -->
<!-- <td class="no"> · Radio Button -->
@@ -39550,6 +39563,54 @@
<td class=no> · <!-- Reset Button -->
<!-- <td class="no"> · Button -->
+ <tr><th> <code title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>
+ <td class=no> · <!-- Hidden -->
+ <td class=no> · <!-- Text -->
+<!-- <td class="no"> · Search -->
+ <td class=no> · <!-- URL, Telephone -->
+ <td class=no> · <!-- E-mail -->
+ <td class=no> · <!-- Password -->
+ <td class=no> · <!-- Date and Time -->
+<!-- <td class="no"> · Date -->
+<!-- <td class="no"> · Month -->
+<!-- <td class="no"> · Week -->
+<!-- <td class="no"> · Time -->
+ <td class=no> · <!-- Local Date and Time -->
+ <td class=no> · <!-- Number -->
+ <td class=yes> Yes** <!-- Range -->
+ <td class=no> · <!-- Color -->
+ <td class=no> · <!-- Checkbox -->
+<!-- <td class="no"> · Radio Button -->
+ <td class=no> · <!-- File Upload -->
+ <td class=no> · <!-- Submit Button -->
+ <td class=no> · <!-- Image Button -->
+ <td class=no> · <!-- Reset Button -->
+<!-- <td class="no"> · Button -->
+
+ <tr><th> <code title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code>
+ <td class=no> · <!-- Hidden -->
+ <td class=no> · <!-- Text -->
+<!-- <td class="no"> · Search -->
+ <td class=no> · <!-- URL, Telephone -->
+ <td class=no> · <!-- E-mail -->
+ <td class=no> · <!-- Password -->
+ <td class=no> · <!-- Date and Time -->
+<!-- <td class="no"> · Date -->
+<!-- <td class="no"> · Month -->
+<!-- <td class="no"> · Week -->
+<!-- <td class="no"> · Time -->
+ <td class=no> · <!-- Local Date and Time -->
+ <td class=no> · <!-- Number -->
+ <td class=yes> Yes** <!-- Range -->
+ <td class=no> · <!-- Color -->
+ <td class=no> · <!-- Checkbox -->
+<!-- <td class="no"> · Radio Button -->
+ <td class=no> · <!-- File Upload -->
+ <td class=no> · <!-- Submit Button -->
+ <td class=no> · <!-- Image Button -->
+ <td class=no> · <!-- Reset Button -->
+<!-- <td class="no"> · Button -->
+
<tr><th> <code title=dom-input-list><a href=#dom-input-list>list</a></code>
<td class=no> · <!-- Hidden -->
<td class=yes> Yes <!-- Text -->
@@ -39816,18 +39877,25 @@
<td class=no> · <!-- Reset Button -->
<!-- <td class="no"> · Button -->
- </table><div class=impl>
+ </table><p class=tablenote><small>* If the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute
+ is not specified.</small></p>
+ <p class=tablenote><small>** If the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute
+ <em>is</em> specified.</small></p>
+
+ <div class=impl>
+
<p>Some states of the <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute define a <dfn id=value-sanitization-algorithm>value
sanitization algorithm</dfn>.</p>
+<!--CLEANUP-->
<p>Each <code><a href=#the-input-element>input</a></code> element has a <a href=#concept-fe-value title=concept-fe-value>value</a>, which is
exposed by the <code title=dom-input-value><a href=#dom-input-value>value</a></code> IDL attribute. Some states define an
<dfn id=concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</dfn>, an
<dfn id=concept-input-value-number-string title=concept-input-value-number-string>algorithm to convert a number to a string</dfn>, an
<dfn id=concept-input-value-string-date title=concept-input-value-string-date>algorithm to convert a string to a <code>Date</code>
object</dfn>, and an <dfn id=concept-input-value-date-string title=concept-input-value-date-string>algorithm to convert a
- <code>Date</code> object to a string</dfn>, which are used by <code title=attr-input-max><a href=#attr-input-max>max</a></code>, <code title=attr-input-min><a href=#attr-input-min>min</a></code>, <code title=attr-input-step><a href=#attr-input-step>step</a></code>, <code title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, <code title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>, <code title=dom-input-stepDown><a href=#dom-input-stepdown>stepDown()</a></code>, and <code title=dom-input-stepUp><a href=#dom-input-stepup>stepUp()</a></code>.</p>
+ <code>Date</code> object to a string</dfn>, which are used by <code title=attr-input-max><a href=#attr-input-max>max</a></code>, <code title=attr-input-min><a href=#attr-input-min>min</a></code>, <code title=attr-input-step><a href=#attr-input-step>step</a></code>, <code title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, <code title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>, <code title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, <code title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code>, <code title=dom-input-stepDown><a href=#dom-input-stepdown>stepDown()</a></code>, and <code title=dom-input-stepUp><a href=#dom-input-stepup>stepUp()</a></code>.</p>
<p>Each <code><a href=#the-input-element>input</a></code> element has a boolean <dfn id=concept-input-value-dirty-flag title=concept-input-value-dirty-flag>dirty
value flag</dfn>. The <a href=#concept-input-value-dirty-flag title=concept-input-value-dirty-flag>dirty value flag</a> must be
@@ -40045,8 +40113,10 @@
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
<code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>,
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code>,
@@ -40161,8 +40231,10 @@
element:
<code class=no-backref title=dom-input-checked><a href=#dom-input-checked>checked</a></code>,
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-input-stepDown><a href=#dom-input-stepdown>stepDown()</a></code> and
<code class=no-backref title=dom-input-stepUp><a href=#dom-input-stepup>stepUp()</a></code> methods.</p>
@@ -40258,8 +40330,10 @@
element:
<code class=no-backref title=dom-input-checked><a href=#dom-input-checked>checked</a></code>,
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-input-stepDown><a href=#dom-input-stepdown>stepDown()</a></code> and
<code class=no-backref title=dom-input-stepUp><a href=#dom-input-stepup>stepUp()</a></code> methods.</p>
@@ -40358,8 +40432,10 @@
element:
<code class=no-backref title=dom-input-checked><a href=#dom-input-checked>checked</a></code>,
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-input-stepDown><a href=#dom-input-stepdown>stepDown()</a></code> and
<code class=no-backref title=dom-input-stepUp><a href=#dom-input-stepup>stepUp()</a></code> methods.</p>
@@ -40446,9 +40522,6 @@
line breaks</a> from the <a href=#concept-fe-value title=concept-fe-value>value</a>, then <a href=#strip-leading-and-trailing-whitespace>strip
leading and trailing whitespace</a> from the <a href=#concept-fe-value title=concept-fe-value>value</a>.</p>
- <p>When the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute is removed, the user
- agent must run the <a href=#value-sanitization-algorithm>value sanitization algorithm</a>.</p>
-
<p><strong>Constraint validation</strong>: While the <a href=#concept-fe-value title=concept-fe-value>value</a>
of the element is neither the empty string nor a single <a href=#valid-e-mail-address>valid e-mail address</a>, the
element is <a href=#suffering-from-a-type-mismatch>suffering from a type mismatch</a>.</p>
@@ -40462,17 +40535,13 @@
<dd>
- <div class=impl>
-
- <p>The element's <a href=#concept-fe-values title=concept-fe-values>value<em>s</em></a> are the result of <a href=#split-a-string-on-commas title="split a string on commas">splitting on commas</a> the element's <a href=#concept-fe-value title=concept-fe-value>value</a>.</p>
-
- </div>
-
+<!--XXXXX-->
<p>The <code><a href=#the-input-element>input</a></code> element <a href=#represents>represents</a> a control for adding, removing, and
editing the e-mail addresses given in the element's <a href=#concept-fe-values title=concept-fe-values>value<em>s</em></a>.</p>
<div class=impl>
+<!--XXXXX-->
<p>If the element is <i title=concept-fe-mutable><a href=#concept-fe-mutable>mutable</a></i>, the user agent should allow the
user to add, remove, and edit the e-mail addresses represented by its <a href=#concept-fe-values title=concept-fe-values>value<em>s</em></a>. User agents may allow the user to set any
individual value in the list of <a href=#concept-fe-value title=concept-fe-value>value<em>s</em></a> to a
@@ -40510,7 +40579,7 @@
<p><strong>The <a href=#value-sanitization-algorithm>value sanitization algorithm</a> is as follows</strong>:</p>
- <ol><li><p><a href=#split-a-string-on-commas title="split a string on commas">Split on commas</a> the element's <a href=#concept-fe-value title=concept-fe-value>value</a>, <a href=#strip-leading-and-trailing-whitespace>strip leading and trailing whitespace</a> from
+ <ol><!--XXXXX--><li><p><a href=#split-a-string-on-commas title="split a string on commas">Split on commas</a> the element's <a href=#concept-fe-value title=concept-fe-value>value</a>, <a href=#strip-leading-and-trailing-whitespace>strip leading and trailing whitespace</a> from
each resulting token, if any, and let the element's <a href=#concept-fe-values title=concept-fe-values>value<em>s</em></a> be the (possibly empty) resulting list of
(possibly empty) tokens, maintaining the original order.</li>
@@ -40519,10 +40588,7 @@
each value from the next by a single U+002C COMMA character (,), maintaining the list's
order.</li>
- </ol><p>When the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute is set, the user agent
- must run the <a href=#value-sanitization-algorithm>value sanitization algorithm</a>.</p>
-
- <p><strong>Constraint validation</strong>: While the <a href=#concept-fe-value title=concept-fe-value>value</a>
+ </ol><p><strong>Constraint validation</strong>: While the <a href=#concept-fe-value title=concept-fe-value>value</a>
of the element is not a <a href=#valid-e-mail-address-list>valid e-mail address list</a>, the element is <a href=#suffering-from-a-type-mismatch>suffering
from a type mismatch</a>.</p>
@@ -40530,7 +40596,10 @@
</dd>
- </dl><p>A <dfn id=valid-e-mail-address>valid e-mail address</dfn> is a string that matches the <code title="">email</code>
+ </dl><p>When the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute is set or removed, the
+ user agent must run the <a href=#value-sanitization-algorithm>value sanitization algorithm</a>.</p>
+
+ <p>A <dfn id=valid-e-mail-address>valid e-mail address</dfn> is a string that matches the <code title="">email</code>
production of the following ABNF, the character set for which is Unicode. This ABNF implements the
extensions described in RFC 1123. <a href=#refsABNF>[ABNF]</a> <a href=#refsRFC5322>[RFC5322]</a> <a href=#refsRFC1034>[RFC1034]</a> <a href=#refsRFC1123>[RFC1123]</a></p>
@@ -40623,8 +40692,10 @@
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
<code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>,
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code>,
@@ -40716,8 +40787,10 @@
<code class=no-backref title=dom-input-checked><a href=#dom-input-checked>checked</a></code>,
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
<code class=no-backref title=dom-input-list><a href=#dom-input-list>list</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-input-stepDown><a href=#dom-input-stepdown>stepDown()</a></code> and
<code class=no-backref title=dom-input-stepUp><a href=#dom-input-stepup>stepUp()</a></code> methods.</p>
@@ -40884,8 +40957,10 @@
<code class=no-backref title=dom-input-checked><a href=#dom-input-checked>checked</a></code>,
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
- <code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>, and
- <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code> IDL attributes;
+ <code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
+ <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>, and
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code> methods.</p>
@@ -41050,8 +41125,10 @@
element:
<code class=no-backref title=dom-input-checked><a href=#dom-input-checked>checked</a></code>,
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
- <code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>, and
- <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code> IDL attributes;
+ <code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
+ <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>, and
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code> methods.</p>
@@ -41191,8 +41268,10 @@
<code class=no-backref title=dom-input-checked><a href=#dom-input-checked>checked</a></code>,
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
- <code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>, and
- <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code> IDL attributes;
+ <code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
+ <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>, and
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code> methods.</p>
@@ -41330,8 +41409,10 @@
<code class=no-backref title=dom-input-checked><a href=#dom-input-checked>checked</a></code>,
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
- <code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>, and
- <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code> IDL attributes;
+ <code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
+ <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>, and
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code> methods.</p>
@@ -41468,8 +41549,10 @@
<code class=no-backref title=dom-input-checked><a href=#dom-input-checked>checked</a></code>,
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
- <code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>, and
- <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code> IDL attributes;
+ <code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
+ <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>, and
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code> methods.</p>
@@ -41605,8 +41688,10 @@
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
- <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>, and
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code> IDL attributes;
+ <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>, and
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code> methods.</p>
@@ -41765,8 +41850,10 @@
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
- <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>, and
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code> IDL attributes;
+ <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>, and
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code> methods.</p>
@@ -41809,65 +41896,184 @@
</div>
- <p>The <code><a href=#the-input-element>input</a></code> element <a href=#represents>represents</a> a control for setting the element's
- <a href=#concept-fe-value title=concept-fe-value>value</a> to a string representing a number, but with the caveat
- that the exact value is not important, letting UAs provide a simpler interface than they do for
- the <a href="#number-state-(type=number)" title=attr-input-type-number>Number</a> state.</p>
+ <p>How the <a href="#range-state-(type=range)" title=attr-input-type-range>Range</a> state operates depends on whether the
+ <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute is specified or not.</p>
- <div class=impl>
+ <dl class=switch><dt>When the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute is not specified on the
+ element</dt>
- <p class=note>In this state, the range and step constraints are enforced even during user input,
- and there is no way to set the value to the empty string.</p>
+ <dd>
+ <!--CLEANUP--> <!-- whole subsection -->
- <p>If the element is <i title=concept-fe-mutable><a href=#concept-fe-mutable>mutable</a></i>, the user agent should allow the
- user to change the number represented by its <a href=#concept-fe-value title=concept-fe-value>value</a>, as
- obtained from applying the <a href=#rules-for-parsing-floating-point-number-values>rules for parsing floating-point number values</a> to it. User
- agents must not allow the user to set the <a href=#concept-fe-value title=concept-fe-value>value</a> to a string
- that is not a <a href=#valid-floating-point-number>valid floating-point number</a>. If the user agent provides a user
- interface for selecting a number, then the <a href=#concept-fe-value title=concept-fe-value>value</a> must be set
- to a <a href=#best-representation-of-the-number-as-a-floating-point-number title="best representation of the number as a floating-point number">best
- representation of the number representing the user's selection as a floating-point number</a>.
- User agents must not allow the user to set the <a href=#concept-fe-value title=concept-fe-value>value</a> to the
- empty string.</p>
+ <p>The <code><a href=#the-input-element>input</a></code> element <a href=#represents>represents</a> a control for setting the element's
+ <a href=#concept-fe-value title=concept-fe-value>value</a> to a string representing a number, but with the caveat
+ that the exact value is not important, letting UAs provide a simpler interface than they do for
+ the <a href="#number-state-(type=number)" title=attr-input-type-number>Number</a> state.</p>
- <p><strong>Constraint validation</strong>: While the user interface describes input that the user
- agent cannot convert to a <a href=#valid-floating-point-number>valid floating-point number</a>, the control is <a href=#suffering-from-bad-input>suffering
- from bad input</a>.</p>
+ <div class=impl>
- </div>
+ <p>If the element is <i title=concept-fe-mutable><a href=#concept-fe-mutable>mutable</a></i>, the user agent should allow the
+ user to change the number represented by its <a href=#concept-fe-value title=concept-fe-value>value</a>, as
+ obtained from applying the <a href=#rules-for-parsing-floating-point-number-values>rules for parsing floating-point number values</a> to it. User
+ agents must not allow the user to set the <a href=#concept-fe-value title=concept-fe-value>value</a> to a string
+ that is not a <a href=#valid-floating-point-number>valid floating-point number</a>. If the user agent provides a user
+ interface for selecting a number, then the <a href=#concept-fe-value title=concept-fe-value>value</a> must be set
+ to a <a href=#best-representation-of-the-number-as-a-floating-point-number title="best representation of the number as a floating-point number">best
+ representation of the number representing the user's selection as a floating-point number</a>.
+ User agents must not allow the user to set the <a href=#concept-fe-value title=concept-fe-value>value</a> to the
+ empty string.</p>
- <p>The <code title=attr-input-value><a href=#attr-input-value>value</a></code> attribute, if specified, must have a value that
- is a <a href=#valid-floating-point-number>valid floating-point number</a>.</p> <!-- ok to set out-of-range value, we never
- know when we might have to represent bogus input; not ok to not have a value if the attribute is
- present, since you can't not have a value (attribute missing is treated as implying a default
- value) -->
+ <p><strong>Constraint validation</strong>: While the user interface describes input that the user
+ agent cannot convert to a <a href=#valid-floating-point-number>valid floating-point number</a>, the control is <a href=#suffering-from-bad-input>suffering
+ from bad input</a>.</p>
- <div class=impl>
+ </div>
- <p><strong>The <a href=#value-sanitization-algorithm>value sanitization algorithm</a> is as follows</strong>: If the <a href=#concept-fe-value title=concept-fe-value>value</a> of the element is not a <a href=#valid-floating-point-number>valid floating-point
- number</a>, then set it to a <a href=#valid-floating-point-number>valid floating-point number</a> that represents the <a href=#concept-input-value-default-range title=concept-input-value-default-range>default value</a>.</p>
+ <p>The <code title=attr-input-value><a href=#attr-input-value>value</a></code> attribute, if specified, must have a value that
+ is a <a href=#valid-floating-point-number>valid floating-point number</a>.</p> <!-- ok to set out-of-range value, we never
+ know when we might have to represent bogus input; not ok to not have a value if the attribute is
+ present, since you can't not have a value (attribute missing is treated as implying a default
+ value) -->
- </div>
+ <div class=impl>
- <p>The <code title=attr-input-min><a href=#attr-input-min>min</a></code> attribute, if specified, must have a value that is
- a <a href=#valid-floating-point-number>valid floating-point number</a>. The <a href=#concept-input-min-default title=concept-input-min-default>default
- minimum</a> is 0. The <code title=attr-input-max><a href=#attr-input-max>max</a></code> attribute, if specified, must
- have a value that is a <a href=#valid-floating-point-number>valid floating-point number</a>. The <a href=#concept-input-max-default title=concept-input-max-default>default maximum</a> is 100.</p>
+<!-- XXXX -->
+ <p><strong>The <a href=#value-sanitization-algorithm>value sanitization algorithm</a> is as follows</strong>: If the <a href=#concept-fe-value title=concept-fe-value>value</a> of the element is not a <a href=#valid-floating-point-number>valid floating-point
+ number</a>, then set it to a <a href=#valid-floating-point-number>valid floating-point number</a> that represents the <a href=#concept-input-value-default-range title=concept-input-value-default-range>default value</a>.</p>
- <p>The <dfn id=concept-input-value-default-range title=concept-input-value-default-range>default value</dfn> is the <a href=#concept-input-min title=concept-input-min>minimum</a> plus half the difference between the <a href=#concept-input-min title=concept-input-min>minimum</a> and the <a href=#concept-input-max title=concept-input-max>maximum</a>,
- unless the <a href=#concept-input-max title=concept-input-max>maximum</a> is less than the <a href=#concept-input-min title=concept-input-min>minimum</a>, in which case the <a href=#concept-input-value-default-range title=concept-input-value-default-range>default value</a> is the <a href=#concept-input-min title=concept-input-min>minimum</a>.</p>
+ </div>
- <div class=impl>
+ <p>The <dfn id=concept-input-value-default-range title=concept-input-value-default-range>default value</dfn> is the <a href=#concept-input-min title=concept-input-min>minimum</a> plus half the difference between the <a href=#concept-input-min title=concept-input-min>minimum</a> and the <a href=#concept-input-max title=concept-input-max>maximum</a>,
+ unless the <a href=#concept-input-max title=concept-input-max>maximum</a> is less than the <a href=#concept-input-min title=concept-input-min>minimum</a>, in which case the <a href=#concept-input-value-default-range title=concept-input-value-default-range>default value</a> is the <a href=#concept-input-min title=concept-input-min>minimum</a>.</p>
- <p>When the element is <a href=#suffering-from-an-underflow>suffering from an underflow</a>, the user agent must set the
- element's <a href=#concept-fe-value title=concept-fe-value>value</a> to a <a href=#valid-floating-point-number>valid floating-point
- number</a> that represents the <a href=#concept-input-min title=concept-input-min>minimum</a>.</p>
+ <div class=impl>
- <p>When the element is <a href=#suffering-from-an-overflow>suffering from an overflow</a>, if the <a href=#concept-input-max title=concept-input-max>maximum</a> is not less than the <a href=#concept-input-min title=concept-input-min>minimum</a>, the user agent must set the element's <a href=#concept-fe-value title=concept-fe-value>value</a> to a <a href=#valid-floating-point-number>valid floating-point number</a> that
- represents the <a href=#concept-input-max title=concept-input-max>maximum</a>.</p>
+<!-- XXXX -->
+ <p>When the element is <a href=#suffering-from-an-underflow>suffering from an underflow</a>, the user agent must set the
+ element's <a href=#concept-fe-value title=concept-fe-value>value</a> to a <a href=#valid-floating-point-number>valid floating-point
+ number</a> that represents the <a href=#concept-input-min title=concept-input-min>minimum</a>.</p>
- </div>
+ <p>When the element is <a href=#suffering-from-an-overflow>suffering from an overflow</a>, if the <a href=#concept-input-max title=concept-input-max>maximum</a> is not less than the <a href=#concept-input-min title=concept-input-min>minimum</a>, the user agent must set the element's <a href=#concept-fe-value title=concept-fe-value>value</a> to a <a href=#valid-floating-point-number>valid floating-point number</a> that
+ represents the <a href=#concept-input-max title=concept-input-max>maximum</a>.</p>
+ <p>When the element is <a href=#suffering-from-a-step-mismatch>suffering from a step mismatch</a>, the user agent must round the
+ element's <a href=#concept-fe-value title=concept-fe-value>value</a> to the nearest number for which the element
+ would not <a href=#suffering-from-a-step-mismatch title="suffering from a step mismatch">suffer from a step mismatch</a>, and
+ which is greater than or equal to the <a href=#concept-input-min title=concept-input-min>minimum</a>, and, if the
+ <a href=#concept-input-max title=concept-input-max>maximum</a> is not less than the <a href=#concept-input-min title=concept-input-min>minimum</a>, which is less than or equal to the <a href=#concept-input-max title=concept-input-max>maximum</a>, if there is a number that matches these constraints. If
+ two numbers match these constraints, then user agents must use the one nearest to positive
+ infinity.</p>
+
+ <p class=example>For example, the markup
+ <code><input type="range" min=0 max=100 step=20 value=50></code>
+ results in a range control whose initial value is 60.</p>
+
+ </div>
+
+ </dd>
+
+ <dt>When the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute <em>is</em> specified on
+ the element</dt>
+
+ <dd>
+
+ <p>The <code><a href=#the-input-element>input</a></code> element <a href=#represents>represents</a> a control for setting the element's
+ <a href=#concept-fe-values title=concept-fe-values>value<em>s</em></a> to two strings representing numbers, but
+ with the caveat that the exact values are not important, enabling UAs provide a graphical
+ interface rather than requiring the user to type the numbers directly.</p>
+
+ <div class=impl>
+
+ <p>If the element is <i title=concept-fe-mutable><a href=#concept-fe-mutable>mutable</a></i>, the user agent should allow the
+ user to change either the first or second number represented by its <a href=#concept-fe-values title=concept-fe-values>values</a>, as obtained from applying the <a href=#rules-for-parsing-floating-point-number-values>rules for parsing
+ floating-point number values</a> to them, and ensuring that the first value is never larger
+ than the second value. User agents must not allow the user to set either the first or second of
+ the <a href=#concept-fe-values title=concept-fe-values>values</a> to a string that is not a <a href=#valid-floating-point-number>valid
+ floating-point number</a>. If the user agent provides a user interface for selecting a
+ number, then these <a href=#concept-fe-values title=concept-fe-values>values</a> must be set to the <a href=#best-representation-of-the-number-as-a-floating-point-number title="best representation of the number as a floating-point number">best representations of
+ the numbers representing the user's selections as floating-point numbers</a>. User agents
+ must not allow the user to set the <a href=#concept-fe-values title=concept-fe-values>values</a> to the empty
+ string.</p>
+
+ <p><strong>Constraint validation</strong>: While the user interface describes input that the
+ user agent cannot convert to a pair of <a href=#valid-floating-point-number title="valid floating-point number">valid
+ floating-point numbers</a>, the control is <a href=#suffering-from-bad-input>suffering from bad input</a>.</p>
+
+ </div>
+
+ <p>The <code title=attr-input-value><a href=#attr-input-value>value</a></code> attribute, if specified, must have a value
+ that is a pair of <a href=#valid-floating-point-number title="valid floating-point number">valid floating-point numbers</a>
+ separated by a single U+002C COMMA character (,).</p> <!-- ok to set out-of-range value, we
+ never know when we might have to represent bogus input; not ok to not have both values if the
+ attribute is present, since you can't not have a value (attribute missing is treated as implying
+ default values) -->
+
+ <div class=impl>
+
+ <p><strong>The <a href=#value-sanitization-algorithm>value sanitization algorithm</a> is as follows</strong>:</p>
+
+ <ol><li><p><a href=#split-a-string-on-commas title="split a string on commas">Split on commas</a> the element's <a href=#concept-fe-value title=concept-fe-value>value</a>.</li>
+
+ <li><p>If there are not exactly two values, or if either value is not a <a href=#valid-floating-point-number>valid
+ floating-point number</a>, then let the element's <a href=#concept-fe-values title=concept-fe-values>values</a> be a pair of values consisting of <a href=#best-representation-of-the-number-as-a-floating-point-number title="best
+ representation of the number as a floating-point number">a best representation, as a
+ floating-point number</a>, of the element's <a href=#concept-input-min title=concept-input-min>minimum</a>
+ and the element's <a href=#concept-input-max title=concept-input-max>maximum</a>, with the smaller value
+ first.</li>
+
+ <li><p>Othwerwise, let the element's <a href=#concept-fe-values title=concept-fe-values>values</a> be the two
+ values, with the smaller value first.</li>
+
+<!--XXXXX-->
+ <li><p>Let the element's <a href=#concept-fe-value title=concept-fe-value>value</a> be the result of
+ concatenating the element's <a href=#concept-fe-values title=concept-fe-values>value<em>s</em></a>, separating
+ them by a single U+002C COMMA character (,), with the lower value coming first.</li>
+
+ </ol><p>Whenever the user changes the element's <a href=#concept-fe-values title=concept-fe-values>values</a>, the
+ user agent must set the element's <a href=#concept-fe-value title=concept-fe-value>value</a> to the result of
+ concatenating the element's <a href=#concept-fe-values title=concept-fe-values>values</a>, separating them by a
+ single U+002C COMMA character (,), with the lower value coming first.</p>
+
+ </div>
+
+ <div class=impl>
+
+<!-- XXXX -->
+ <p>When the element is <a href=#suffering-from-an-underflow>suffering from an underflow</a>, the user agent must set either
+ of the element's <a href=#concept-fe-values title=concept-fe-values>values</a> that represent values less than
+ the <a href=#concept-input-min title=concept-input-min>minimum</a> to a <a href=#valid-floating-point-number>valid floating-point
+ number</a> that represents the <a href=#concept-input-min title=concept-input-min>minimum</a>.</p>
+
+ <p>When the element is <a href=#suffering-from-an-overflow>suffering from an overflow</a>, if the <a href=#concept-input-max title=concept-input-max>maximum</a> is not less than the <a href=#concept-input-min title=concept-input-min>minimum</a>, the user agent must set either of the element's <a href=#concept-fe-values title=concept-fe-values>values</a> that represent values greater than the <a href=#concept-input-max title=concept-input-max>maximum</a> to a <a href=#valid-floating-point-number>valid floating-point number</a> that
+ represents the <a href=#concept-input-max title=concept-input-max>maximum</a>.</p>
+
+ <p>When the element is <a href=#suffering-from-a-step-mismatch>suffering from a step mismatch</a>, the user agent must round
+ the values represented by the element's <a href=#concept-fe-values title=concept-fe-values>values</a> to, in
+ each case, the nearest number for which the element would not <a href=#suffering-from-a-step-mismatch title="suffering from a
+ step mismatch">suffer from a step mismatch</a>, and which is greater than or equal to the
+ <a href=#concept-input-min title=concept-input-min>minimum</a>, and, if the <a href=#concept-input-max title=concept-input-max>maximum</a> is not less than the <a href=#concept-input-min title=concept-input-min>minimum</a>, which is less than or equal to the <a href=#concept-input-max title=concept-input-max>maximum</a>, if there is a number that matches these constraints.
+ If two numbers match these constraints, then user agents must use the one nearest to positive
+ infinity.</p>
+
+ <p>Whenever the user agent changes the element's <a href=#concept-fe-values title=concept-fe-values>values</a>
+ according to the three previous paragraphs, the user agent must set the element's <a href=#concept-fe-value title=concept-fe-value>value</a> to the result of concatenating the element's <a href=#concept-fe-values title=concept-fe-values>values</a>, separating them by a single U+002C COMMA character
+ (,), with the lower value coming first.</p>
+
+ </div>
+
+ </dd>
+
+ </dl><p>When the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute is set or removed, the
+ user agent must run the <a href=#value-sanitization-algorithm>value sanitization algorithm</a>.</p>
+
+ <p class=note>In this state, the range and step constraints are enforced even during user input,
+ and there is no way to set the value to the empty string.</p>
+
+ <p>The <code title=attr-input-min><a href=#attr-input-min>min</a></code> attribute, if specified, must have a value that is
+ a <a href=#valid-floating-point-number>valid floating-point number</a>. The <a href=#concept-input-min-default title=concept-input-min-default>default
+ minimum</a> is 0. The <code title=attr-input-max><a href=#attr-input-max>max</a></code> attribute, if specified, must
+ have a value that is a <a href=#valid-floating-point-number>valid floating-point number</a>. The <a href=#concept-input-max-default title=concept-input-max-default>default maximum</a> is 100.</p>
+
<p><span class=impl>The <a href=#concept-input-step-scale title=concept-input-step-scale>step scale factor</a> is
1.</span> The <a href=#concept-input-step-default title=concept-input-step-default>default step</a> is 1 (allowing only
integers, unless the <code title=attr-input-min><a href=#attr-input-min>min</a></code> attribute has a non-integer
@@ -41875,23 +42081,12 @@
<div class=impl>
- <p>When the element is <a href=#suffering-from-a-step-mismatch>suffering from a step mismatch</a>, the user agent must round the
- element's <a href=#concept-fe-value title=concept-fe-value>value</a> to the nearest number for which the element
- would not <a href=#suffering-from-a-step-mismatch title="suffering from a step mismatch">suffer from a step mismatch</a>, and
- which is greater than or equal to the <a href=#concept-input-min title=concept-input-min>minimum</a>, and, if the
- <a href=#concept-input-max title=concept-input-max>maximum</a> is not less than the <a href=#concept-input-min title=concept-input-min>minimum</a>, which is less than or equal to the <a href=#concept-input-max title=concept-input-max>maximum</a>, if there is a number that matches these constraints. If
- two numbers match these constraints, then user agents must use the one nearest to positive
- infinity.</p>
-
- <p class=example>For example, the markup
- <code><input type="range" min=0 max=100 step=20 value=50></code>
- results in a range control whose initial value is 60.</p>
-
<p><strong>The <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a
number</a>, given a string <var title="">input</var>, is as follows</strong>: If applying the
<a href=#rules-for-parsing-floating-point-number-values>rules for parsing floating-point number values</a> to <var title="">input</var> results
in an error, then return an error; otherwise, return the resulting number.</p>
+<!-- XXXX -->
<p><strong>The <a href=#concept-input-value-number-string title=concept-input-value-number-string>algorithm to convert a number to a
string</a>, given a number <var title="">input</var>, is as follows</strong>: Return a
<a href=#valid-floating-point-number>valid floating-point number</a> that represents <var title="">input</var>.</p>
@@ -41905,7 +42100,8 @@
<code title=attr-fe-autocomplete><a href=#attr-fe-autocomplete>autocomplete</a></code>,
<code title=attr-input-list><a href=#attr-input-list>list</a></code>,
<code title=attr-input-max><a href=#attr-input-max>max</a></code>,
- <code title=attr-input-min><a href=#attr-input-min>min</a></code>, and
+ <code title=attr-input-min><a href=#attr-input-min>min</a></code>,
+ <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code>, and
<code title=attr-input-step><a href=#attr-input-step>step</a></code> content attributes;
<code title=dom-input-list><a href=#dom-input-list>list</a></code>,
<code title=dom-input-value><a href=#dom-input-value>value</a></code>, and
@@ -41913,6 +42109,13 @@
<code title=dom-input-stepDown><a href=#dom-input-stepdown>stepDown()</a></code> and
<code title=dom-input-stepUp><a href=#dom-input-stepup>stepUp()</a></code> methods.</p>
+ <p>The following common <code><a href=#the-input-element>input</a></code> IDL attribute <a href=#concept-input-apply title=concept-input-apply>applies</a> to the element if the <code class=no-backref title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> content attribute is not specified:
+ <code title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>.</p>
+
+ <p>The following common <code><a href=#the-input-element>input</a></code> IDL attributes <a href=#concept-input-apply title=concept-input-apply>apply</a> to the element if the <code class=no-backref title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> content attribute <em>is</em> specified:
+ <code title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code> and
+ <code title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code>.</p>
+
<p>The <code title=dom-input-value><a href=#dom-input-value>value</a></code> IDL attribute is in mode <a href=#dom-input-value-value title=dom-input-value-value>value</a>.</p>
<p>The <code title=event-input-input><a href=#event-input-input>input</a></code> and <code title=event-input-change><a href=#event-input-change>change</a></code> events <a href=#concept-input-apply title=concept-input-apply>apply</a>.</p>
@@ -41932,7 +42135,6 @@
<code class=no-backref title=attr-fe-inputmode><a href=#attr-fe-inputmode>inputmode</a></code>,
<code class=no-backref title=attr-input-maxlength><a href=#attr-input-maxlength>maxlength</a></code>,
<code class=no-backref title=attr-input-minlength><a href=#attr-input-minlength>minlength</a></code>,
- <code class=no-backref title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code>,
<code class=no-backref title=attr-input-pattern><a href=#attr-input-pattern>pattern</a></code>,
<code class=no-backref title=attr-input-placeholder><a href=#attr-input-placeholder>placeholder</a></code>,
<code class=no-backref title=attr-input-readonly><a href=#attr-input-readonly>readonly</a></code>,
@@ -41946,14 +42148,28 @@
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
- <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>, and
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code> IDL attributes;
+ <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>, and
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code> methods.</p>
+ <p>The following common <code><a href=#the-input-element>input</a></code> IDL attributes <a href=#do-not-apply>do not apply</a> to the
+ element if the <code class=no-backref title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> content
+ attribute is not specified:
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code> and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code>.</p>
+
+ <p>The following common <code><a href=#the-input-element>input</a></code> IDL attribute <a href=#do-not-apply title="do not apply">does not
+ apply</a> to the element if the <code class=no-backref title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> content attribute <em>is</em> specified:
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>.</p>
+
</div>
+ <!--CLEANUP--><!-- move these into the relevant subsection above -->
+
<div class=example>
<p>Here is an example of a range control using an autocomplete list with the <code title=attr-input-list><a href=#attr-input-list>list</a></code> attribute. This could be useful if there are values along the
@@ -42113,8 +42329,10 @@
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
<code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>,
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code>,
@@ -42216,8 +42434,10 @@
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
<code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>,
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code>,
@@ -42342,8 +42562,10 @@
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
<code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>,
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code>,
@@ -42577,8 +42799,10 @@
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
<code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>,
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code>,
@@ -42669,8 +42893,10 @@
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
<code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>,
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code>,
@@ -42868,8 +43094,10 @@
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
<code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>,
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code>,
@@ -42975,8 +43203,10 @@
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
<code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>,
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code>,
@@ -43055,8 +43285,10 @@
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
<code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>,
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code>,
@@ -43336,6 +43568,9 @@
<h6 id=the-pattern-attribute><span class=secno>4.10.5.3.6 </span>The <code title=attr-input-pattern><a href=#attr-input-pattern>pattern</a></code> attribute</h6>
+ <!-- if more text control types start supporting multiple="", this will need to be refactored -->
+
+<!--XXXXX-->
<p>The <dfn id=attr-input-pattern title=attr-input-pattern><code>pattern</code></dfn> attribute specifies a regular
expression against which the control's <a href=#concept-fe-value title=concept-fe-value>value</a>, or, when the
<code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute <a href=#concept-input-apply title=concept-input-apply>applies</a> and is set, the control's <a href=#concept-fe-values title=concept-fe-values>value<em>s</em></a>, are to be checked.</p>
@@ -43359,6 +43594,7 @@
entirety of the element's <a href=#concept-fe-value title=concept-fe-value>value</a>, then the element is
<a href=#suffering-from-a-pattern-mismatch>suffering from a pattern mismatch</a>.</p>
+<!--XXXXX-->
<p><strong>Constraint validation</strong>: If the element's <a href=#concept-fe-value title=concept-fe-value>value</a> is not the empty string, and the element's <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute is specified and <a href=#concept-input-apply title=concept-input-apply>applies</a> to the <code><a href=#the-input-element>input</a></code> element, and the element has
a <a href=#compiled-pattern-regular-expression>compiled pattern regular expression</a> but that regular expression does not match the
entirety of each of the element's <a href=#concept-fe-values title=concept-fe-values>value<em>s</em></a>, then the
@@ -43405,9 +43641,11 @@
<code title=attr-input-title><a href=#attr-input-title>title</a></code>s as if an error has necessarily occurred.</p>
-
+<!--CLEANUP-->
<h6 id=the-min-and-max-attributes><span class=secno>4.10.5.3.7 </span>The <code title=attr-input-min><a href=#attr-input-min>min</a></code> and <code title=attr-input-max><a href=#attr-input-max>max</a></code> attributes</h6>
+ <!-- if more numeric control types start supporting multiple="", this will need to be refactored -->
+
<p>Some form controls can have explicit constraints applied limiting the allowed range of values
that the user can provide. Normally, such a range would be linear and continuous. A form control
can <dfn id=has-a-periodic-domain title="has a periodic domain">have a periodic domain</dfn>, however, in which case the
@@ -43460,26 +43698,56 @@
<div class=impl>
- <p><strong>Constraint validation</strong>: When the element has a <a href=#attr-input-min title=attr-input-min>minimum</a> and does not <a href=#has-a-reversed-range title="has a reversed range">have a
- reversed range</a>, and the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a> to the
- string given by the element's <a href=#concept-fe-value title=concept-fe-value>value</a> is a number, and the
- number obtained from that algorithm is less than the <a href=#attr-input-min title=attr-input-min>minimum</a>,
- the element is <a href=#suffering-from-an-underflow>suffering from an underflow</a>.</p>
+ <p>How these range limitations apply depends on whether the element has a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute.</p>
- <p><strong>Constraint validation</strong>: When the element has a <a href=#attr-input-max title=attr-input-max>maximum</a> and does not <a href=#has-a-reversed-range title="has a reversed range">have a
- reversed range</a>, and the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a> to the
- string given by the element's <a href=#concept-fe-value title=concept-fe-value>value</a> is a number, and the
- number obtained from that algorithm is more than the <a href=#attr-input-max title=attr-input-max>maximum</a>,
- the element is <a href=#suffering-from-an-overflow>suffering from an overflow</a>.</p>
+ <dl class=switch><dt>If the element does not have a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute
+ specified or if the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute <a href=#do-not-apply title="do
+ not apply">does not apply</a></dt>
- <p><strong>Constraint validation</strong>: When an element <a href=#has-a-reversed-range>has a reversed range</a>, and
- the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a
- string to a number</a> to the string given by the element's <a href=#concept-fe-value title=concept-fe-value>value</a> is a number, and the number obtained from that algorithm is
- more than the <a href=#attr-input-max title=attr-input-max>maximum</a> <em>and</em> less than the <a href=#attr-input-min title=attr-input-min>minimum</a>, the element is simultaneously <a href=#suffering-from-an-underflow>suffering from an
- underflow</a> and <a href=#suffering-from-an-overflow>suffering from an overflow</a>.</p>
+ <dd><!--CLEANUP--><!--x3-->
- </div>
+ <p><strong>Constraint validation</strong>: When the element has a <a href=#attr-input-min title=attr-input-min>minimum</a> and does not <a href=#has-a-reversed-range title="has a reversed range">have a
+ reversed range</a>, and the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a> to the
+ string given by the element's <a href=#concept-fe-value title=concept-fe-value>value</a> is a number, and the
+ number obtained from that algorithm is less than the <a href=#attr-input-min title=attr-input-min>minimum</a>,
+ the element is <a href=#suffering-from-an-underflow>suffering from an underflow</a>.</p>
+ <p><strong>Constraint validation</strong>: When the element has a <a href=#attr-input-max title=attr-input-max>maximum</a> and does not <a href=#has-a-reversed-range title="has a reversed range">have a
+ reversed range</a>, and the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a> to the
+ string given by the element's <a href=#concept-fe-value title=concept-fe-value>value</a> is a number, and the
+ number obtained from that algorithm is more than the <a href=#attr-input-max title=attr-input-max>maximum</a>,
+ the element is <a href=#suffering-from-an-overflow>suffering from an overflow</a>.</p>
+
+ <p><strong>Constraint validation</strong>: When an element <a href=#has-a-reversed-range>has a reversed range</a>, and
+ the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a
+ string to a number</a> to the string given by the element's <a href=#concept-fe-value title=concept-fe-value>value</a> is a number, and the number obtained from that algorithm is
+ more than the <a href=#attr-input-max title=attr-input-max>maximum</a> <em>and</em> less than the <a href=#attr-input-min title=attr-input-min>minimum</a>, the element is simultaneously <a href=#suffering-from-an-underflow>suffering from an
+ underflow</a> and <a href=#suffering-from-an-overflow>suffering from an overflow</a>.</p>
+
+ </dd>
+
+ <dt>If the element does have a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute
+ specified and the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute does <a href=#concept-input-apply title=concept-input-apply>apply</a></dt>
+
+ <dd>
+
+ <p><strong>Constraint validation</strong>: When the element has a <a href=#attr-input-min title=attr-input-min>minimum</a>, and the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a> to
+ any of the strings in the element's <a href=#concept-fe-values title=concept-fe-values>values</a> is a number
+ that is less than the <a href=#attr-input-min title=attr-input-min>minimum</a>, the element is
+ <a href=#suffering-from-an-underflow>suffering from an underflow</a>.</p>
+
+ <p><strong>Constraint validation</strong>: When the element has a <a href=#attr-input-max title=attr-input-max>maximum</a>, and the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a> to
+ any of the strings in the element's <a href=#concept-fe-values title=concept-fe-values>values</a> is a number
+ that is more than the <a href=#attr-input-max title=attr-input-max>maximum</a>, the element is
+ <a href=#suffering-from-an-overflow>suffering from an overflow</a>.</p>
+
+ <!-- currently multiple="" only applies to type=range, which can't have a reversed range or a
+ periodic domain -->
+
+ </dd>
+
+ </dl></div>
+
<div class=example>
<p>The following date control limits input to dates that are before the 1980s:</p>
@@ -43509,8 +43777,11 @@
<h6 id=the-step-attribute><span class=secno>4.10.5.3.8 </span>The <code title=attr-input-step><a href=#attr-input-step>step</a></code> attribute</h6>
+ <!-- if more numeric control types start supporting multiple="", this will need to be refactored -->
+
+<!--CLEANUP-->
<p>The <dfn id=attr-input-step title=attr-input-step><code>step</code></dfn> attribute indicates the granularity
- that is expected (and required) of the <a href=#concept-fe-value title=concept-fe-value>value</a>, by limiting
+ that is expected (and required) of the <a href=#concept-fe-value title=concept-fe-value>value</a> or <a href=#concept-fe-values title=concept-fe-values>values</a>, by limiting
the allowed values. <span class=impl>The section that defines the <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute's current state also defines the <dfn id=concept-input-step-default title=concept-input-step-default>default step</dfn>, the <dfn id=concept-input-step-scale title=concept-input-step-scale>step scale factor</dfn>, and in some cases the <dfn id=concept-input-step-default-base title=concept-input-step-default-base>default step base</dfn>, which are used in processing the
attribute as described below.</span></p>
@@ -43549,25 +43820,71 @@
string to a number</a> to the value of the <code title=attr-input-min><a href=#attr-input-min>min</a></code> content
attribute is not an error, then return that result and abort these steps.</li>
- <li><p>If the element has a <code title=attr-input-value><a href=#attr-input-value>value</a></code> content attribute, and
- the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a
- string to a number</a> to the value of the <code title=attr-input-value><a href=#attr-input-value>value</a></code> content
- attribute is not an error, then return that result and abort these steps.</li>
+ <li>
+<!--CLEANUP-->
+ <p>If the element does not have a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute
+ specified or if the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute <a href=#do-not-apply title="do not apply">does not
+ apply</a>, then: if the element has a <code title=attr-input-value><a href=#attr-input-value>value</a></code> content attribute, and
+ the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a
+ string to a number</a> to the value of the <code title=attr-input-value><a href=#attr-input-value>value</a></code> content
+ attribute is not an error, then return that result and abort these steps.</p>
+
+ <p>Otherwise, the element's <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute is in the <a href="#range-state-(type=range)" title=attr-input-type-range>Range</a> state and the element has a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute specified<!--, and the <code
+ title="attr-input-multiple">multiple</code> attribute does <span
+ title="concept-input-apply">apply</span>-->: run these substeps:</p>
+
+ <ol><li><p>If the element does not have a <code title=attr-input-value><a href=#attr-input-value>value</a></code> content
+ attribute, skip these substeps.</li>
+
+ <li><p><a href=#split-a-string-on-commas title="split a string on commas">Split on commas</a> the value of the <code title=attr-input-value><a href=#attr-input-value>value</a></code> content attribute.</li>
+
+ <li><p>If the result of the previous step was not exactly two values, both of which are <a href=#valid-floating-point-number title="valid floating-point number">valid floating-point numbers</a>, then skip these
+ substeps.</li>
+
+<!--XXXX-->
+ <li><p>Return the number represented by the lower of the two values, and abort these
+ steps.</li>
+
+ </ol></li>
+
<li><p>If a <a href=#concept-input-step-default-base title=concept-input-step-default-base>default step base</a> is defined for
this element given its <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute's state, then return
it and abort these steps.</p>
<li><p>Return zero.</li>
- </ol><p><strong>Constraint validation</strong>: When the element has an <a href=#concept-input-step title=concept-input-step>allowed value step</a>, and the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a> to the
- string given by the element's <a href=#concept-fe-value title=concept-fe-value>value</a> is a number, and that
- number subtracted from the <a href=#concept-input-min-zero title=concept-input-min-zero>step base</a> is not an
- integral multiple of the <a href=#concept-input-step title=concept-input-step>allowed value step</a>, the element
- is <a href=#suffering-from-a-step-mismatch>suffering from a step mismatch</a>.</p>
+ </ol><p>How these range limitations apply depends on whether the element has a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute.</p>
- </div>
+ <dl class=switch><dt>If the element does not have a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute
+ specified or if the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute <a href=#do-not-apply title="do
+ not apply">does not apply</a></dt>
+ <dd><!--CLEANUP-->
+
+ <p><strong>Constraint validation</strong>: When the element has an <a href=#concept-input-step title=concept-input-step>allowed value step</a>, and the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a> to the
+ string given by the element's <a href=#concept-fe-value title=concept-fe-value>value</a> is a number, and that
+ number subtracted from the <a href=#concept-input-min-zero title=concept-input-min-zero>step base</a> is not an
+ integral multiple of the <a href=#concept-input-step title=concept-input-step>allowed value step</a>, the element
+ is <a href=#suffering-from-a-step-mismatch>suffering from a step mismatch</a>.</p>
+
+ </dd>
+
+ <dt>If the element does have a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute
+ specified and the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute does <a href=#concept-input-apply title=concept-input-apply>apply</a></dt>
+
+ <dd>
+
+ <p><strong>Constraint validation</strong>: When the element has an <a href=#attr-input-step title=attr-input-step>allowed value step</a>, and the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a> to
+ any of the strings in the element's <a href=#concept-fe-values title=concept-fe-values>values</a> is a number
+ that, when subtracted from the <a href=#concept-input-min-zero title=concept-input-min-zero>step base</a>, is not an
+ integral multiple of the <a href=#concept-input-step title=concept-input-step>allowed value step</a>, the
+ element is <a href=#suffering-from-a-step-mismatch>suffering from a step mismatch</a>.</p>
+
+ </dd>
+
+ </dl></div>
+
<div class=example>
<p>The following range control only accepts values in the range 0..1, and allows 256 steps in
@@ -43592,6 +43909,8 @@
<h6 id=the-list-attribute><span class=secno>4.10.5.3.9 </span>The <code title=attr-input-list><a href=#attr-input-list>list</a></code> attribute</h6>
+ <!-- if we add any more types of controls, the handling of multiple="" below needs refactoring -->
+
<p>The <dfn id=attr-input-list title=attr-input-list><code>list</code></dfn> attribute is used to identify an
element that lists predefined options suggested to the user.</p>
@@ -43617,8 +43936,8 @@
accepting a single value only, or whether it accepts multiple values:</p>
<dl class=switch><dt>If the element does not have a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute
- specified or if the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute does <span>not
- apply</span></dt>
+ specified or if the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute <a href=#do-not-apply title="do
+ not apply">does not apply</a></dt>
<dd>
@@ -43626,12 +43945,28 @@
</dd>
- <dt>If the element <em>does</em> have a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code>
- attribute specified, and the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute does
- <a href=#concept-input-apply title=concept-input-apply>apply</a></dt>
+ <!-- multiple types where there's a fixed number of values-->
+ <dt>If the element's <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute is in the <a href="#range-state-(type=range)" title=attr-input-type-range>Range</a> state and the element has a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute specified<!--, and the <code
+ title="attr-input-multiple">multiple</code> attribute does <span
+ title="concept-input-apply">apply</span>--></dt>
<dd>
+ <p>When the user selects a suggestion, the user agent must identify which value in the element's
+ <a href=#concept-fe-values title=concept-fe-values>values</a> the user intended to update, and must then update
+ the element's <a href=#concept-fe-values title=concept-fe-values>values</a> so that the relevant value is
+ changed to the value given by the selected suggestion's <a href=#concept-option-value title=concept-option-value>value</a>, as if the user had himself set it to that value.</p>
+
+ </dd>
+
+ <!-- multiple types where there's a potentially growing number of values -->
+ <dt>If the element's <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute is in the <a href="#e-mail-state-(type=email)" title=attr-input-type-email>Email</a> state and the element has a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute specified<!--, and the <code
+ title="attr-input-multiple">multiple</code> attribute does <span
+ title="concept-input-apply">apply</span>--></dt>
+
+ <dd>
+
+<!--XXXXX-->
<p>When the user selects a suggestion, the user agent must either add a new entry to the
<code><a href=#the-input-element>input</a></code> element's <a href=#concept-fe-values title=concept-fe-values>value<em>s</em></a>, whose value
is the selected suggestion's <a href=#concept-option-value title=concept-option-value>value</a>, or change an
@@ -43845,6 +44180,20 @@
</dd>
+ <dt><var title="">input</var> . <code title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code> [ = <var title="">value</var> ]</dt>
+ <dt><var title="">input</var> . <code title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> [ = <var title="">value</var> ]</dt>
+
+ <dd>
+
+ <p>Returns a number representing the low and high components of form control's <a href=#concept-fe-value title=concept-fe-value>value</a> respectively, if applicable; otherwise, returns NaN.</p>
+
+ <p>Can be set, to change the value.</p>
+
+ <p>Throws an <code><a href=#invalidstateerror>InvalidStateError</a></code> exception if the control is not a two-handle range
+ control.</p>
+
+ </dd>
+
<dt><var title="">input</var> . <code title=dom-input-stepUp><a href=#dom-input-stepup>stepUp</a></code>( [ <var title="">n</var> ] )</dt>
<dt><var title="">input</var> . <code title=dom-input-stepDown><a href=#dom-input-stepdown>stepDown</a></code>( [ <var title="">n</var> ] )</dt>
@@ -43941,9 +44290,10 @@
<hr><p>The <dfn id=dom-input-valueasdate title=dom-input-valueAsDate><code>valueAsDate</code></dfn> IDL attribute represents
the <a href=#concept-fe-value title=concept-fe-value>value</a> of the element, interpreted as a date.</p>
+<!--CLEANUP-->
<p>On getting, if the <code title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code> attribute <a href=#do-not-apply title="do not apply">does not apply</a>, as defined for the <code><a href=#the-input-element>input</a></code> element's <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute's current state, then return null. Otherwise, run
the <a href=#concept-input-value-string-date title=concept-input-value-string-date>algorithm to convert a string to a
- <code>Date</code> object</a> defined for that state; if the algorithm returned a
+ <code>Date</code> object</a> defined for that state to the element's <a href=#concept-fe-value title=concept-fe-value>value</a>; if the algorithm returned a
<code>Date</code> object, then return it, otherwise, return null.</p>
<p>On setting, if the <code title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code> attribute <a href=#do-not-apply title="do not apply">does not apply</a>, as defined for the <code><a href=#the-input-element>input</a></code> element's <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute's current state, then throw an
@@ -43955,14 +44305,15 @@
represents the <a href=#concept-fe-value title=concept-fe-value>value</a> of the element, interpreted as a
number.</p>
+<!--CLEANUP-->
<p>On getting, if the <code title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> attribute <a href=#do-not-apply title="do not apply">does not apply</a>, as defined for the <code><a href=#the-input-element>input</a></code> element's <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute's current state, then return a Not-a-Number (NaN)
value. Otherwise, if the <code title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAs<em>Date</em></a></code> attribute
<a href=#concept-input-apply title=concept-input-apply>applies</a>, run the <a href=#concept-input-value-string-date title=concept-input-value-string-date>algorithm to convert a string to a <code>Date</code>
- object</a> defined for that state; if the algorithm returned a <code>Date</code> object, then
+ object</a> defined for that state to the element's <a href=#concept-fe-value title=concept-fe-value>value</a>; if the algorithm returned a <code>Date</code> object, then
return the <i>time value</i> of the object (the number of milliseconds from midnight UTC the
morning of 1970-01-01 to the time represented by the <code>Date</code> object), otherwise, return
a Not-a-Number (NaN) value. Otherwise, run the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a> defined
- for that state; if the algorithm returned a number, then return it, otherwise, return a
+ for that state to the element's <a href=#concept-fe-value title=concept-fe-value>value</a>; if the algorithm returned a number, then return it, otherwise, return a
Not-a-Number (NaN) value.</p>
<p>On setting, if the new value is infinite, then throw a <code>TypeError</code> exception.
@@ -43977,7 +44328,50 @@
defined for that state, on the new value, and set the <a href=#concept-fe-value title=concept-fe-value>value</a>
of the element to the resulting string.</p>
- <hr><p>The <dfn id=dom-input-stepdown title=dom-input-stepDown><code>stepDown(<var title="">n</var>)</code></dfn> and <dfn id=dom-input-stepup title=dom-input-stepUp><code>stepUp(<var title="">n</var>)</code></dfn> methods, when invoked,
+ <hr><p>The <dfn id=dom-input-valuelow title=dom-input-valueLow><code>valueLow</code></dfn> and <dfn id=dom-input-valuehigh title=dom-input-valueHigh><code>valueHigh</code></dfn> IDL attributes represent the <a href=#concept-fe-value title=concept-fe-value>value</a> of the element, interpreted as a comma-separated pair of
+ numbers.</p>
+
+ <p>On getting, if the attributes <a href=#do-not-apply>do not apply</a>, as defined for the <code><a href=#the-input-element>input</a></code>
+ element's <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute's current state, then return zero;
+ otherwise, run the following steps:</p>
+
+ <ol><li><p>Let <var title="">values</var> be the <a href=#concept-fe-values title=concept-fe-values>values</a> of
+ the element, interpreted according to the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a>, as
+ defined by the <code><a href=#the-input-element>input</a></code> element's <code title=attr-input-type><a href=#attr-input-type>type</a></code>
+ attribute's current state.</li>
+
+ <li><p>If the attribute in question is <code title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, return
+ the lowest of the values in <var title="">values</var>; otherwise, return the highest of the
+ values in <var title="">values</var>.</li>
+
+ </ol><p>On setting, if the attributes <a href=#do-not-apply>do not apply</a>, as defined for the <code><a href=#the-input-element>input</a></code>
+ element's <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute's current state, then throw an
+ <code><a href=#invalidstateerror>InvalidStateError</a></code> exception. Otherwise, run the following steps:</p>
+
+ <ol><li><p>Let <var title="">values</var> be the <a href=#concept-fe-values title=concept-fe-values>values</a> of
+ the element, interpreted according to the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a>, as
+ defined by the <code><a href=#the-input-element>input</a></code> element's <code title=attr-input-type><a href=#attr-input-type>type</a></code>
+ attribute's current state.</li>
+
+ <li><p>Let <var title="">new value</var> be the result of running the <a href=#concept-input-value-number-string title=concept-input-value-number-string>algorithm to convert a number to a string</a>, as
+ defined for that state, on the new value.</li>
+
+ <li><p>If the attribute in question is <code title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, replace
+ the lower value in <var title="">values</var> with <var title="">new value</var>; otherwise,
+ replace the higher value in <var title="">values</var> with <var title="">new
+ value</var>.</li>
+
+ <li><p>Sort <var title="">values</var> in increasing numeric order.</li>
+
+ <li><p>Let <a href=#concept-fe-values title=concept-fe-values>values</a> be the result of running the <a href=#concept-input-value-number-string title=concept-input-value-number-string>algorithm to convert a number to a string</a>, as
+ defined by the <code><a href=#the-input-element>input</a></code> element's <code title=attr-input-type><a href=#attr-input-type>type</a></code>
+ attribute's current state, to the values in <var title="">values</var>.</li>
+
+ <li><p>Set the element's <a href=#concept-fe-value title=concept-fe-value>value</a> to the concatenation of the
+ strings in in <a href=#concept-fe-values title=concept-fe-values>values</a>, separating each value from the next
+ by a U+002C COMMA character (,).</li>
+
+ </ol><hr><p>The <dfn id=dom-input-stepdown title=dom-input-stepDown><code>stepDown(<var title="">n</var>)</code></dfn> and <dfn id=dom-input-stepup title=dom-input-stepUp><code>stepUp(<var title="">n</var>)</code></dfn> methods, when invoked,
must run the following algorithm:</p>
<ol><li><p>If the <code title=dom-input-stepDown><a href=#dom-input-stepdown>stepDown()</a></code> and <code title=dom-input-stepUp><a href=#dom-input-stepup>stepUp()</a></code> methods <a href=#do-not-apply>do not apply</a>, as defined for the
@@ -48306,10 +48700,15 @@
<dd>The element's <a href=#concept-fe-values title=concept-fe-values>values</a>.</dd>
+<!--
+ <dt>An <code>input</code> element with its <code title="attr-input-type">type</code> attribute
+ in the <span title="attr-input-type-range">Range</span> state and with the <code
+ title="attr-input-multiple">multiple</code> attribute specified</dt>
+-->
<dt>Any other <code><a href=#the-input-element>input</a></code> element</dt>
<dt>A <code><a href=#the-textarea-element>textarea</a></code> element</dt>
- <dd>The element's <a href=#concept-fe-values title=concept-fe-values>value</a>.</dd>
+ <dd>The element's <a href=#concept-fe-value title=concept-fe-value>value</a>.</dd>
<dt>A <code><a href=#the-select-element>select</a></code> element with its <code title=attr-select-multiple><a href=#attr-select-multiple>multiple</a></code>
attribute specified</dt>
@@ -99858,12 +100257,12 @@
</table><p class=tablenote><small>An asterisk (*) in a cell indicates that the actual rules are more
complicated than indicated in the table above.</small></p>
- <p>† Categories in the "Parents" column refer to parents that list the given categories in
- their content model, not to elements that themselves are in those categories. For example, the
- <code><a href=#the-a-element>a</a></code> element's "Parents" column says "phrasing", so any element whose content model
- contains the "phrasing" category could be a parent of an <code><a href=#the-a-element>a</a></code> element. Since the "flow"
- category includes all the "phrasing" elements, that means the <code><a href=#the-th-element>th</a></code> element could be a
- parent to an <code><a href=#the-a-element>a</a></code> element.</p>
+ <p class=tablenote><small>† Categories in the "Parents" column refer to parents that list
+ the given categories in their content model, not to elements that themselves are in those
+ categories. For example, the <code><a href=#the-a-element>a</a></code> element's "Parents" column says "phrasing", so any
+ element whose content model contains the "phrasing" category could be a parent of an
+ <code><a href=#the-a-element>a</a></code> element. Since the "flow" category includes all the "phrasing" elements, that means
+ the <code><a href=#the-th-element>th</a></code> element could be a parent to an <code><a href=#the-a-element>a</a></code> element.</small></p>
Modified: index
===================================================================
--- index 2014-01-28 23:50:26 UTC (rev 8434)
+++ index 2014-01-29 20:40:26 UTC (rev 8435)
@@ -298,7 +298,7 @@
<header class=head id=head><p><a href=http://www.whatwg.org/ class=logo><img width=101 src=/images/logo alt=WHATWG height=101></a></p>
<hgroup><h1 class=allcaps>HTML</h1>
- <h2 class="no-num no-toc">Living Standard — Last Updated 28 January 2014</h2>
+ <h2 class="no-num no-toc">Living Standard — Last Updated 29 January 2014</h2>
</hgroup><dl><dt><strong>Web developer edition:</strong></dt>
<dd><strong><a href=http://developers.whatwg.org/>http://developers.whatwg.org/</a></strong></dd>
<dt>Multiple-page version:</dt>
@@ -11654,12 +11654,20 @@
<a href=#concept-fe-checked title=concept-fe-checked>checkedness</a> is true, or "false" otherwise
<tr><td><code><a href=#the-input-element>input</a></code> element with a <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute in
- the <a href="#range-state-(type=range)" title=attr-input-type-range>Range</a> state
+ the <a href="#range-state-(type=range)" title=attr-input-type-range>Range</a> state and the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute not specified
<td><code title=attr-aria-role-slider>slider</code> role, with the <code title=attr-aria-valuemax>aria-valuemax</code> property set to the element's <a href=#concept-input-max title=concept-input-max>maximum</a>, the <code title=attr-aria-valuemin>aria-valuemin</code> property set to the element's <a href=#concept-input-min title=concept-input-min>minimum</a>, and the <code title=attr-aria-valuenow>aria-valuenow</code> property set to the result of applying the
<a href=#rules-for-parsing-floating-point-number-values>rules for parsing floating-point number values</a> to the element's <a href=#concept-fe-value title=concept-fe-value>value</a>, if that results in a number, or the <a href=#concept-input-value-default-range title=concept-input-value-default-range>default value</a> otherwise
<tr><td><code><a href=#the-input-element>input</a></code> element with a <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute in
+ the <a href="#range-state-(type=range)" title=attr-input-type-range>Range</a> state and the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute not specified
+
+ <td><code title=attr-aria-valuemax>aria-valuemax</code> property set to the element's <a href=#concept-input-max title=concept-input-max>maximum</a>, and the <code title=attr-aria-valuemin>aria-valuemin</code> property set to the element's <a href=#concept-input-min title=concept-input-min>minimum</a>
+
+ <!-- ARIA doesn't currently support a single element with two slider values, so leave the rest
+ undefined for now -->
+
+ <tr><td><code><a href=#the-input-element>input</a></code> element with a <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute in
the <a href="#reset-button-state-(type=reset)" title=attr-input-type-reset>Reset Button</a> state
<td><code title=attr-aria-role-button>button</code> role
@@ -38628,6 +38636,8 @@
[TreatNullAs=EmptyString] attribute DOMString <a href=#dom-input-value title=dom-input-value>value</a>;
attribute <span>Date</span>? <a href=#dom-input-valueasdate title=dom-input-valueAsDate>valueAsDate</a>;
attribute unrestricted double <a href=#dom-input-valueasnumber title=dom-input-valueAsNumber>valueAsNumber</a>;
+ attribute double <a href=#dom-input-valuelow title=dom-input-valueLow>valueLow</a>;
+ attribute double <a href=#dom-input-valuehigh title=dom-input-valueHigh>valueHigh</a>;
attribute unsigned long <a href=#dom-input-width title=dom-input-width>width</a>;
void <a href=#dom-input-stepup title=dom-input-stepUp>stepUp</a>(optional long n = 1);
@@ -38761,11 +38771,14 @@
</table><p>The <i>missing value default</i> is the <a href="#text-(type=text)-state-and-search-state-(type=search)" title=attr-input-type-text>Text</a>
state.</p>
+<!--CLEANUP--> <!-- prettify -->
<p>Which of the <code title=attr-input-accept><a href=#attr-input-accept>accept</a></code>, <code title=attr-input-alt><a href=#attr-input-alt>alt</a></code>, <code title=attr-fe-autocomplete><a href=#attr-fe-autocomplete>autocomplete</a></code>, <code title=attr-input-checked><a href=#attr-input-checked>checked</a></code>, <code title=attr-fe-dirname><a href=#attr-fe-dirname>dirname</a></code>, <code title=attr-fs-formaction><a href=#attr-fs-formaction>formaction</a></code>, <code title=attr-fs-formenctype><a href=#attr-fs-formenctype>formenctype</a></code>, <code title=attr-fs-formmethod><a href=#attr-fs-formmethod>formmethod</a></code>, <code title=attr-fs-formnovalidate><a href=#attr-fs-formnovalidate>formnovalidate</a></code>, <code title=attr-fs-formtarget><a href=#attr-fs-formtarget>formtarget</a></code>, <code title=attr-dim-height><a href=#attr-dim-height>height</a></code>, <code title=attr-fe-inputmode><a href=#attr-fe-inputmode>inputmode</a></code>, <code title=
attr-input-list><a href=#attr-input-list>list</a></code>, <code title=attr-input-max><a href=#attr-input-max>max</a></code>, <code title=attr-input-maxlength><a href=#attr-input-maxlength>maxlength</a></code>, <code title=attr-input-min><a href=#attr-input-min>min</a></code>, <code title=attr-input-minlength><a href=#attr-input-minlength>minlength</a></code>, <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code>, <code title=attr-input-pattern><a href=#attr-input-pattern>pattern</a></code>,
<code title=attr-input-placeholder><a href=#attr-input-placeholder>placeholder</a></code>, <code title=attr-input-readonly><a href=#attr-input-readonly>readonly</a></code>, <code title=attr-input-required><a href=#attr-input-required>required</a></code>,
<code title=attr-input-size><a href=#attr-input-size>size</a></code>, <code title=attr-input-src><a href=#attr-input-src>src</a></code>, <code title=attr-input-step><a href=#attr-input-step>step</a></code>, and <code title=attr-dim-width><a href=#attr-dim-width>width</a></code> content
attributes, the <code title=dom-input-checked><a href=#dom-input-checked>checked</a></code>, <code title=dom-input-files><a href=#dom-input-files>files</a></code>, <code title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
- <code title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>, and <code title=dom-input-list><a href=#dom-input-list>list</a></code> IDL attributes, the <code title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code> method, the <code title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>, <code title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>, and <code title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>, IDL attributes, the
+ <code title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>,
+ <code title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code>, and <code title=dom-input-list><a href=#dom-input-list>list</a></code> IDL attributes, the <code title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code> method, the <code title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>, <code title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>, and <code title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>, IDL attributes, the
<code title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code> and <code title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code> methods, the <code title=dom-input-stepUp><a href=#dom-input-stepup>stepUp()</a></code> and <code title=dom-input-stepDown><a href=#dom-input-stepdown>stepDown()</a></code>
methods, and the <code title=event-input-input><a href=#event-input-input>input</a></code> and <code title=event-input-change><a href=#event-input-change>change</a></code> events <dfn id=concept-input-apply title=concept-input-apply>apply</dfn> to
an <code><a href=#the-input-element>input</a></code> element depends on the state of its <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute. The subsections that define each type also clearly
@@ -39226,7 +39239,7 @@
<!-- <td class="no"> · Time -->
<td class=no> · <!-- Local Date and Time -->
<td class=no> · <!-- Number -->
- <td class=no> · <!-- Range -->
+ <td class=yes> Yes <!-- Range -->
<td class=no> · <!-- Color -->
<td class=no> · <!-- Checkbox -->
<!-- <td class="no"> · Radio Button -->
@@ -39540,7 +39553,7 @@
<!-- <td class="yes"> Yes Time -->
<td class=yes> Yes <!-- Local Date and Time -->
<td class=yes> Yes <!-- Number -->
- <td class=yes> Yes <!-- Range -->
+ <td class=yes> Yes* <!-- Range -->
<td class=no> · <!-- Color -->
<td class=no> · <!-- Checkbox -->
<!-- <td class="no"> · Radio Button -->
@@ -39550,6 +39563,54 @@
<td class=no> · <!-- Reset Button -->
<!-- <td class="no"> · Button -->
+ <tr><th> <code title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>
+ <td class=no> · <!-- Hidden -->
+ <td class=no> · <!-- Text -->
+<!-- <td class="no"> · Search -->
+ <td class=no> · <!-- URL, Telephone -->
+ <td class=no> · <!-- E-mail -->
+ <td class=no> · <!-- Password -->
+ <td class=no> · <!-- Date and Time -->
+<!-- <td class="no"> · Date -->
+<!-- <td class="no"> · Month -->
+<!-- <td class="no"> · Week -->
+<!-- <td class="no"> · Time -->
+ <td class=no> · <!-- Local Date and Time -->
+ <td class=no> · <!-- Number -->
+ <td class=yes> Yes** <!-- Range -->
+ <td class=no> · <!-- Color -->
+ <td class=no> · <!-- Checkbox -->
+<!-- <td class="no"> · Radio Button -->
+ <td class=no> · <!-- File Upload -->
+ <td class=no> · <!-- Submit Button -->
+ <td class=no> · <!-- Image Button -->
+ <td class=no> · <!-- Reset Button -->
+<!-- <td class="no"> · Button -->
+
+ <tr><th> <code title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code>
+ <td class=no> · <!-- Hidden -->
+ <td class=no> · <!-- Text -->
+<!-- <td class="no"> · Search -->
+ <td class=no> · <!-- URL, Telephone -->
+ <td class=no> · <!-- E-mail -->
+ <td class=no> · <!-- Password -->
+ <td class=no> · <!-- Date and Time -->
+<!-- <td class="no"> · Date -->
+<!-- <td class="no"> · Month -->
+<!-- <td class="no"> · Week -->
+<!-- <td class="no"> · Time -->
+ <td class=no> · <!-- Local Date and Time -->
+ <td class=no> · <!-- Number -->
+ <td class=yes> Yes** <!-- Range -->
+ <td class=no> · <!-- Color -->
+ <td class=no> · <!-- Checkbox -->
+<!-- <td class="no"> · Radio Button -->
+ <td class=no> · <!-- File Upload -->
+ <td class=no> · <!-- Submit Button -->
+ <td class=no> · <!-- Image Button -->
+ <td class=no> · <!-- Reset Button -->
+<!-- <td class="no"> · Button -->
+
<tr><th> <code title=dom-input-list><a href=#dom-input-list>list</a></code>
<td class=no> · <!-- Hidden -->
<td class=yes> Yes <!-- Text -->
@@ -39816,18 +39877,25 @@
<td class=no> · <!-- Reset Button -->
<!-- <td class="no"> · Button -->
- </table><div class=impl>
+ </table><p class=tablenote><small>* If the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute
+ is not specified.</small></p>
+ <p class=tablenote><small>** If the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute
+ <em>is</em> specified.</small></p>
+
+ <div class=impl>
+
<p>Some states of the <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute define a <dfn id=value-sanitization-algorithm>value
sanitization algorithm</dfn>.</p>
+<!--CLEANUP-->
<p>Each <code><a href=#the-input-element>input</a></code> element has a <a href=#concept-fe-value title=concept-fe-value>value</a>, which is
exposed by the <code title=dom-input-value><a href=#dom-input-value>value</a></code> IDL attribute. Some states define an
<dfn id=concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</dfn>, an
<dfn id=concept-input-value-number-string title=concept-input-value-number-string>algorithm to convert a number to a string</dfn>, an
<dfn id=concept-input-value-string-date title=concept-input-value-string-date>algorithm to convert a string to a <code>Date</code>
object</dfn>, and an <dfn id=concept-input-value-date-string title=concept-input-value-date-string>algorithm to convert a
- <code>Date</code> object to a string</dfn>, which are used by <code title=attr-input-max><a href=#attr-input-max>max</a></code>, <code title=attr-input-min><a href=#attr-input-min>min</a></code>, <code title=attr-input-step><a href=#attr-input-step>step</a></code>, <code title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, <code title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>, <code title=dom-input-stepDown><a href=#dom-input-stepdown>stepDown()</a></code>, and <code title=dom-input-stepUp><a href=#dom-input-stepup>stepUp()</a></code>.</p>
+ <code>Date</code> object to a string</dfn>, which are used by <code title=attr-input-max><a href=#attr-input-max>max</a></code>, <code title=attr-input-min><a href=#attr-input-min>min</a></code>, <code title=attr-input-step><a href=#attr-input-step>step</a></code>, <code title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, <code title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>, <code title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, <code title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code>, <code title=dom-input-stepDown><a href=#dom-input-stepdown>stepDown()</a></code>, and <code title=dom-input-stepUp><a href=#dom-input-stepup>stepUp()</a></code>.</p>
<p>Each <code><a href=#the-input-element>input</a></code> element has a boolean <dfn id=concept-input-value-dirty-flag title=concept-input-value-dirty-flag>dirty
value flag</dfn>. The <a href=#concept-input-value-dirty-flag title=concept-input-value-dirty-flag>dirty value flag</a> must be
@@ -40045,8 +40113,10 @@
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
<code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>,
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code>,
@@ -40161,8 +40231,10 @@
element:
<code class=no-backref title=dom-input-checked><a href=#dom-input-checked>checked</a></code>,
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-input-stepDown><a href=#dom-input-stepdown>stepDown()</a></code> and
<code class=no-backref title=dom-input-stepUp><a href=#dom-input-stepup>stepUp()</a></code> methods.</p>
@@ -40258,8 +40330,10 @@
element:
<code class=no-backref title=dom-input-checked><a href=#dom-input-checked>checked</a></code>,
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-input-stepDown><a href=#dom-input-stepdown>stepDown()</a></code> and
<code class=no-backref title=dom-input-stepUp><a href=#dom-input-stepup>stepUp()</a></code> methods.</p>
@@ -40358,8 +40432,10 @@
element:
<code class=no-backref title=dom-input-checked><a href=#dom-input-checked>checked</a></code>,
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-input-stepDown><a href=#dom-input-stepdown>stepDown()</a></code> and
<code class=no-backref title=dom-input-stepUp><a href=#dom-input-stepup>stepUp()</a></code> methods.</p>
@@ -40446,9 +40522,6 @@
line breaks</a> from the <a href=#concept-fe-value title=concept-fe-value>value</a>, then <a href=#strip-leading-and-trailing-whitespace>strip
leading and trailing whitespace</a> from the <a href=#concept-fe-value title=concept-fe-value>value</a>.</p>
- <p>When the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute is removed, the user
- agent must run the <a href=#value-sanitization-algorithm>value sanitization algorithm</a>.</p>
-
<p><strong>Constraint validation</strong>: While the <a href=#concept-fe-value title=concept-fe-value>value</a>
of the element is neither the empty string nor a single <a href=#valid-e-mail-address>valid e-mail address</a>, the
element is <a href=#suffering-from-a-type-mismatch>suffering from a type mismatch</a>.</p>
@@ -40462,17 +40535,13 @@
<dd>
- <div class=impl>
-
- <p>The element's <a href=#concept-fe-values title=concept-fe-values>value<em>s</em></a> are the result of <a href=#split-a-string-on-commas title="split a string on commas">splitting on commas</a> the element's <a href=#concept-fe-value title=concept-fe-value>value</a>.</p>
-
- </div>
-
+<!--XXXXX-->
<p>The <code><a href=#the-input-element>input</a></code> element <a href=#represents>represents</a> a control for adding, removing, and
editing the e-mail addresses given in the element's <a href=#concept-fe-values title=concept-fe-values>value<em>s</em></a>.</p>
<div class=impl>
+<!--XXXXX-->
<p>If the element is <i title=concept-fe-mutable><a href=#concept-fe-mutable>mutable</a></i>, the user agent should allow the
user to add, remove, and edit the e-mail addresses represented by its <a href=#concept-fe-values title=concept-fe-values>value<em>s</em></a>. User agents may allow the user to set any
individual value in the list of <a href=#concept-fe-value title=concept-fe-value>value<em>s</em></a> to a
@@ -40510,7 +40579,7 @@
<p><strong>The <a href=#value-sanitization-algorithm>value sanitization algorithm</a> is as follows</strong>:</p>
- <ol><li><p><a href=#split-a-string-on-commas title="split a string on commas">Split on commas</a> the element's <a href=#concept-fe-value title=concept-fe-value>value</a>, <a href=#strip-leading-and-trailing-whitespace>strip leading and trailing whitespace</a> from
+ <ol><!--XXXXX--><li><p><a href=#split-a-string-on-commas title="split a string on commas">Split on commas</a> the element's <a href=#concept-fe-value title=concept-fe-value>value</a>, <a href=#strip-leading-and-trailing-whitespace>strip leading and trailing whitespace</a> from
each resulting token, if any, and let the element's <a href=#concept-fe-values title=concept-fe-values>value<em>s</em></a> be the (possibly empty) resulting list of
(possibly empty) tokens, maintaining the original order.</li>
@@ -40519,10 +40588,7 @@
each value from the next by a single U+002C COMMA character (,), maintaining the list's
order.</li>
- </ol><p>When the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute is set, the user agent
- must run the <a href=#value-sanitization-algorithm>value sanitization algorithm</a>.</p>
-
- <p><strong>Constraint validation</strong>: While the <a href=#concept-fe-value title=concept-fe-value>value</a>
+ </ol><p><strong>Constraint validation</strong>: While the <a href=#concept-fe-value title=concept-fe-value>value</a>
of the element is not a <a href=#valid-e-mail-address-list>valid e-mail address list</a>, the element is <a href=#suffering-from-a-type-mismatch>suffering
from a type mismatch</a>.</p>
@@ -40530,7 +40596,10 @@
</dd>
- </dl><p>A <dfn id=valid-e-mail-address>valid e-mail address</dfn> is a string that matches the <code title="">email</code>
+ </dl><p>When the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute is set or removed, the
+ user agent must run the <a href=#value-sanitization-algorithm>value sanitization algorithm</a>.</p>
+
+ <p>A <dfn id=valid-e-mail-address>valid e-mail address</dfn> is a string that matches the <code title="">email</code>
production of the following ABNF, the character set for which is Unicode. This ABNF implements the
extensions described in RFC 1123. <a href=#refsABNF>[ABNF]</a> <a href=#refsRFC5322>[RFC5322]</a> <a href=#refsRFC1034>[RFC1034]</a> <a href=#refsRFC1123>[RFC1123]</a></p>
@@ -40623,8 +40692,10 @@
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
<code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>,
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code>,
@@ -40716,8 +40787,10 @@
<code class=no-backref title=dom-input-checked><a href=#dom-input-checked>checked</a></code>,
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
<code class=no-backref title=dom-input-list><a href=#dom-input-list>list</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-input-stepDown><a href=#dom-input-stepdown>stepDown()</a></code> and
<code class=no-backref title=dom-input-stepUp><a href=#dom-input-stepup>stepUp()</a></code> methods.</p>
@@ -40884,8 +40957,10 @@
<code class=no-backref title=dom-input-checked><a href=#dom-input-checked>checked</a></code>,
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
- <code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>, and
- <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code> IDL attributes;
+ <code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
+ <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>, and
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code> methods.</p>
@@ -41050,8 +41125,10 @@
element:
<code class=no-backref title=dom-input-checked><a href=#dom-input-checked>checked</a></code>,
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
- <code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>, and
- <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code> IDL attributes;
+ <code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
+ <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>, and
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code> methods.</p>
@@ -41191,8 +41268,10 @@
<code class=no-backref title=dom-input-checked><a href=#dom-input-checked>checked</a></code>,
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
- <code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>, and
- <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code> IDL attributes;
+ <code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
+ <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>, and
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code> methods.</p>
@@ -41330,8 +41409,10 @@
<code class=no-backref title=dom-input-checked><a href=#dom-input-checked>checked</a></code>,
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
- <code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>, and
- <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code> IDL attributes;
+ <code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
+ <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>, and
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code> methods.</p>
@@ -41468,8 +41549,10 @@
<code class=no-backref title=dom-input-checked><a href=#dom-input-checked>checked</a></code>,
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
- <code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>, and
- <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code> IDL attributes;
+ <code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
+ <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>, and
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code> methods.</p>
@@ -41605,8 +41688,10 @@
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
- <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>, and
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code> IDL attributes;
+ <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>, and
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code> methods.</p>
@@ -41765,8 +41850,10 @@
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
- <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>, and
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code> IDL attributes;
+ <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>, and
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code> methods.</p>
@@ -41809,65 +41896,184 @@
</div>
- <p>The <code><a href=#the-input-element>input</a></code> element <a href=#represents>represents</a> a control for setting the element's
- <a href=#concept-fe-value title=concept-fe-value>value</a> to a string representing a number, but with the caveat
- that the exact value is not important, letting UAs provide a simpler interface than they do for
- the <a href="#number-state-(type=number)" title=attr-input-type-number>Number</a> state.</p>
+ <p>How the <a href="#range-state-(type=range)" title=attr-input-type-range>Range</a> state operates depends on whether the
+ <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute is specified or not.</p>
- <div class=impl>
+ <dl class=switch><dt>When the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute is not specified on the
+ element</dt>
- <p class=note>In this state, the range and step constraints are enforced even during user input,
- and there is no way to set the value to the empty string.</p>
+ <dd>
+ <!--CLEANUP--> <!-- whole subsection -->
- <p>If the element is <i title=concept-fe-mutable><a href=#concept-fe-mutable>mutable</a></i>, the user agent should allow the
- user to change the number represented by its <a href=#concept-fe-value title=concept-fe-value>value</a>, as
- obtained from applying the <a href=#rules-for-parsing-floating-point-number-values>rules for parsing floating-point number values</a> to it. User
- agents must not allow the user to set the <a href=#concept-fe-value title=concept-fe-value>value</a> to a string
- that is not a <a href=#valid-floating-point-number>valid floating-point number</a>. If the user agent provides a user
- interface for selecting a number, then the <a href=#concept-fe-value title=concept-fe-value>value</a> must be set
- to a <a href=#best-representation-of-the-number-as-a-floating-point-number title="best representation of the number as a floating-point number">best
- representation of the number representing the user's selection as a floating-point number</a>.
- User agents must not allow the user to set the <a href=#concept-fe-value title=concept-fe-value>value</a> to the
- empty string.</p>
+ <p>The <code><a href=#the-input-element>input</a></code> element <a href=#represents>represents</a> a control for setting the element's
+ <a href=#concept-fe-value title=concept-fe-value>value</a> to a string representing a number, but with the caveat
+ that the exact value is not important, letting UAs provide a simpler interface than they do for
+ the <a href="#number-state-(type=number)" title=attr-input-type-number>Number</a> state.</p>
- <p><strong>Constraint validation</strong>: While the user interface describes input that the user
- agent cannot convert to a <a href=#valid-floating-point-number>valid floating-point number</a>, the control is <a href=#suffering-from-bad-input>suffering
- from bad input</a>.</p>
+ <div class=impl>
- </div>
+ <p>If the element is <i title=concept-fe-mutable><a href=#concept-fe-mutable>mutable</a></i>, the user agent should allow the
+ user to change the number represented by its <a href=#concept-fe-value title=concept-fe-value>value</a>, as
+ obtained from applying the <a href=#rules-for-parsing-floating-point-number-values>rules for parsing floating-point number values</a> to it. User
+ agents must not allow the user to set the <a href=#concept-fe-value title=concept-fe-value>value</a> to a string
+ that is not a <a href=#valid-floating-point-number>valid floating-point number</a>. If the user agent provides a user
+ interface for selecting a number, then the <a href=#concept-fe-value title=concept-fe-value>value</a> must be set
+ to a <a href=#best-representation-of-the-number-as-a-floating-point-number title="best representation of the number as a floating-point number">best
+ representation of the number representing the user's selection as a floating-point number</a>.
+ User agents must not allow the user to set the <a href=#concept-fe-value title=concept-fe-value>value</a> to the
+ empty string.</p>
- <p>The <code title=attr-input-value><a href=#attr-input-value>value</a></code> attribute, if specified, must have a value that
- is a <a href=#valid-floating-point-number>valid floating-point number</a>.</p> <!-- ok to set out-of-range value, we never
- know when we might have to represent bogus input; not ok to not have a value if the attribute is
- present, since you can't not have a value (attribute missing is treated as implying a default
- value) -->
+ <p><strong>Constraint validation</strong>: While the user interface describes input that the user
+ agent cannot convert to a <a href=#valid-floating-point-number>valid floating-point number</a>, the control is <a href=#suffering-from-bad-input>suffering
+ from bad input</a>.</p>
- <div class=impl>
+ </div>
- <p><strong>The <a href=#value-sanitization-algorithm>value sanitization algorithm</a> is as follows</strong>: If the <a href=#concept-fe-value title=concept-fe-value>value</a> of the element is not a <a href=#valid-floating-point-number>valid floating-point
- number</a>, then set it to a <a href=#valid-floating-point-number>valid floating-point number</a> that represents the <a href=#concept-input-value-default-range title=concept-input-value-default-range>default value</a>.</p>
+ <p>The <code title=attr-input-value><a href=#attr-input-value>value</a></code> attribute, if specified, must have a value that
+ is a <a href=#valid-floating-point-number>valid floating-point number</a>.</p> <!-- ok to set out-of-range value, we never
+ know when we might have to represent bogus input; not ok to not have a value if the attribute is
+ present, since you can't not have a value (attribute missing is treated as implying a default
+ value) -->
- </div>
+ <div class=impl>
- <p>The <code title=attr-input-min><a href=#attr-input-min>min</a></code> attribute, if specified, must have a value that is
- a <a href=#valid-floating-point-number>valid floating-point number</a>. The <a href=#concept-input-min-default title=concept-input-min-default>default
- minimum</a> is 0. The <code title=attr-input-max><a href=#attr-input-max>max</a></code> attribute, if specified, must
- have a value that is a <a href=#valid-floating-point-number>valid floating-point number</a>. The <a href=#concept-input-max-default title=concept-input-max-default>default maximum</a> is 100.</p>
+<!-- XXXX -->
+ <p><strong>The <a href=#value-sanitization-algorithm>value sanitization algorithm</a> is as follows</strong>: If the <a href=#concept-fe-value title=concept-fe-value>value</a> of the element is not a <a href=#valid-floating-point-number>valid floating-point
+ number</a>, then set it to a <a href=#valid-floating-point-number>valid floating-point number</a> that represents the <a href=#concept-input-value-default-range title=concept-input-value-default-range>default value</a>.</p>
- <p>The <dfn id=concept-input-value-default-range title=concept-input-value-default-range>default value</dfn> is the <a href=#concept-input-min title=concept-input-min>minimum</a> plus half the difference between the <a href=#concept-input-min title=concept-input-min>minimum</a> and the <a href=#concept-input-max title=concept-input-max>maximum</a>,
- unless the <a href=#concept-input-max title=concept-input-max>maximum</a> is less than the <a href=#concept-input-min title=concept-input-min>minimum</a>, in which case the <a href=#concept-input-value-default-range title=concept-input-value-default-range>default value</a> is the <a href=#concept-input-min title=concept-input-min>minimum</a>.</p>
+ </div>
- <div class=impl>
+ <p>The <dfn id=concept-input-value-default-range title=concept-input-value-default-range>default value</dfn> is the <a href=#concept-input-min title=concept-input-min>minimum</a> plus half the difference between the <a href=#concept-input-min title=concept-input-min>minimum</a> and the <a href=#concept-input-max title=concept-input-max>maximum</a>,
+ unless the <a href=#concept-input-max title=concept-input-max>maximum</a> is less than the <a href=#concept-input-min title=concept-input-min>minimum</a>, in which case the <a href=#concept-input-value-default-range title=concept-input-value-default-range>default value</a> is the <a href=#concept-input-min title=concept-input-min>minimum</a>.</p>
- <p>When the element is <a href=#suffering-from-an-underflow>suffering from an underflow</a>, the user agent must set the
- element's <a href=#concept-fe-value title=concept-fe-value>value</a> to a <a href=#valid-floating-point-number>valid floating-point
- number</a> that represents the <a href=#concept-input-min title=concept-input-min>minimum</a>.</p>
+ <div class=impl>
- <p>When the element is <a href=#suffering-from-an-overflow>suffering from an overflow</a>, if the <a href=#concept-input-max title=concept-input-max>maximum</a> is not less than the <a href=#concept-input-min title=concept-input-min>minimum</a>, the user agent must set the element's <a href=#concept-fe-value title=concept-fe-value>value</a> to a <a href=#valid-floating-point-number>valid floating-point number</a> that
- represents the <a href=#concept-input-max title=concept-input-max>maximum</a>.</p>
+<!-- XXXX -->
+ <p>When the element is <a href=#suffering-from-an-underflow>suffering from an underflow</a>, the user agent must set the
+ element's <a href=#concept-fe-value title=concept-fe-value>value</a> to a <a href=#valid-floating-point-number>valid floating-point
+ number</a> that represents the <a href=#concept-input-min title=concept-input-min>minimum</a>.</p>
- </div>
+ <p>When the element is <a href=#suffering-from-an-overflow>suffering from an overflow</a>, if the <a href=#concept-input-max title=concept-input-max>maximum</a> is not less than the <a href=#concept-input-min title=concept-input-min>minimum</a>, the user agent must set the element's <a href=#concept-fe-value title=concept-fe-value>value</a> to a <a href=#valid-floating-point-number>valid floating-point number</a> that
+ represents the <a href=#concept-input-max title=concept-input-max>maximum</a>.</p>
+ <p>When the element is <a href=#suffering-from-a-step-mismatch>suffering from a step mismatch</a>, the user agent must round the
+ element's <a href=#concept-fe-value title=concept-fe-value>value</a> to the nearest number for which the element
+ would not <a href=#suffering-from-a-step-mismatch title="suffering from a step mismatch">suffer from a step mismatch</a>, and
+ which is greater than or equal to the <a href=#concept-input-min title=concept-input-min>minimum</a>, and, if the
+ <a href=#concept-input-max title=concept-input-max>maximum</a> is not less than the <a href=#concept-input-min title=concept-input-min>minimum</a>, which is less than or equal to the <a href=#concept-input-max title=concept-input-max>maximum</a>, if there is a number that matches these constraints. If
+ two numbers match these constraints, then user agents must use the one nearest to positive
+ infinity.</p>
+
+ <p class=example>For example, the markup
+ <code><input type="range" min=0 max=100 step=20 value=50></code>
+ results in a range control whose initial value is 60.</p>
+
+ </div>
+
+ </dd>
+
+ <dt>When the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute <em>is</em> specified on
+ the element</dt>
+
+ <dd>
+
+ <p>The <code><a href=#the-input-element>input</a></code> element <a href=#represents>represents</a> a control for setting the element's
+ <a href=#concept-fe-values title=concept-fe-values>value<em>s</em></a> to two strings representing numbers, but
+ with the caveat that the exact values are not important, enabling UAs provide a graphical
+ interface rather than requiring the user to type the numbers directly.</p>
+
+ <div class=impl>
+
+ <p>If the element is <i title=concept-fe-mutable><a href=#concept-fe-mutable>mutable</a></i>, the user agent should allow the
+ user to change either the first or second number represented by its <a href=#concept-fe-values title=concept-fe-values>values</a>, as obtained from applying the <a href=#rules-for-parsing-floating-point-number-values>rules for parsing
+ floating-point number values</a> to them, and ensuring that the first value is never larger
+ than the second value. User agents must not allow the user to set either the first or second of
+ the <a href=#concept-fe-values title=concept-fe-values>values</a> to a string that is not a <a href=#valid-floating-point-number>valid
+ floating-point number</a>. If the user agent provides a user interface for selecting a
+ number, then these <a href=#concept-fe-values title=concept-fe-values>values</a> must be set to the <a href=#best-representation-of-the-number-as-a-floating-point-number title="best representation of the number as a floating-point number">best representations of
+ the numbers representing the user's selections as floating-point numbers</a>. User agents
+ must not allow the user to set the <a href=#concept-fe-values title=concept-fe-values>values</a> to the empty
+ string.</p>
+
+ <p><strong>Constraint validation</strong>: While the user interface describes input that the
+ user agent cannot convert to a pair of <a href=#valid-floating-point-number title="valid floating-point number">valid
+ floating-point numbers</a>, the control is <a href=#suffering-from-bad-input>suffering from bad input</a>.</p>
+
+ </div>
+
+ <p>The <code title=attr-input-value><a href=#attr-input-value>value</a></code> attribute, if specified, must have a value
+ that is a pair of <a href=#valid-floating-point-number title="valid floating-point number">valid floating-point numbers</a>
+ separated by a single U+002C COMMA character (,).</p> <!-- ok to set out-of-range value, we
+ never know when we might have to represent bogus input; not ok to not have both values if the
+ attribute is present, since you can't not have a value (attribute missing is treated as implying
+ default values) -->
+
+ <div class=impl>
+
+ <p><strong>The <a href=#value-sanitization-algorithm>value sanitization algorithm</a> is as follows</strong>:</p>
+
+ <ol><li><p><a href=#split-a-string-on-commas title="split a string on commas">Split on commas</a> the element's <a href=#concept-fe-value title=concept-fe-value>value</a>.</li>
+
+ <li><p>If there are not exactly two values, or if either value is not a <a href=#valid-floating-point-number>valid
+ floating-point number</a>, then let the element's <a href=#concept-fe-values title=concept-fe-values>values</a> be a pair of values consisting of <a href=#best-representation-of-the-number-as-a-floating-point-number title="best
+ representation of the number as a floating-point number">a best representation, as a
+ floating-point number</a>, of the element's <a href=#concept-input-min title=concept-input-min>minimum</a>
+ and the element's <a href=#concept-input-max title=concept-input-max>maximum</a>, with the smaller value
+ first.</li>
+
+ <li><p>Othwerwise, let the element's <a href=#concept-fe-values title=concept-fe-values>values</a> be the two
+ values, with the smaller value first.</li>
+
+<!--XXXXX-->
+ <li><p>Let the element's <a href=#concept-fe-value title=concept-fe-value>value</a> be the result of
+ concatenating the element's <a href=#concept-fe-values title=concept-fe-values>value<em>s</em></a>, separating
+ them by a single U+002C COMMA character (,), with the lower value coming first.</li>
+
+ </ol><p>Whenever the user changes the element's <a href=#concept-fe-values title=concept-fe-values>values</a>, the
+ user agent must set the element's <a href=#concept-fe-value title=concept-fe-value>value</a> to the result of
+ concatenating the element's <a href=#concept-fe-values title=concept-fe-values>values</a>, separating them by a
+ single U+002C COMMA character (,), with the lower value coming first.</p>
+
+ </div>
+
+ <div class=impl>
+
+<!-- XXXX -->
+ <p>When the element is <a href=#suffering-from-an-underflow>suffering from an underflow</a>, the user agent must set either
+ of the element's <a href=#concept-fe-values title=concept-fe-values>values</a> that represent values less than
+ the <a href=#concept-input-min title=concept-input-min>minimum</a> to a <a href=#valid-floating-point-number>valid floating-point
+ number</a> that represents the <a href=#concept-input-min title=concept-input-min>minimum</a>.</p>
+
+ <p>When the element is <a href=#suffering-from-an-overflow>suffering from an overflow</a>, if the <a href=#concept-input-max title=concept-input-max>maximum</a> is not less than the <a href=#concept-input-min title=concept-input-min>minimum</a>, the user agent must set either of the element's <a href=#concept-fe-values title=concept-fe-values>values</a> that represent values greater than the <a href=#concept-input-max title=concept-input-max>maximum</a> to a <a href=#valid-floating-point-number>valid floating-point number</a> that
+ represents the <a href=#concept-input-max title=concept-input-max>maximum</a>.</p>
+
+ <p>When the element is <a href=#suffering-from-a-step-mismatch>suffering from a step mismatch</a>, the user agent must round
+ the values represented by the element's <a href=#concept-fe-values title=concept-fe-values>values</a> to, in
+ each case, the nearest number for which the element would not <a href=#suffering-from-a-step-mismatch title="suffering from a
+ step mismatch">suffer from a step mismatch</a>, and which is greater than or equal to the
+ <a href=#concept-input-min title=concept-input-min>minimum</a>, and, if the <a href=#concept-input-max title=concept-input-max>maximum</a> is not less than the <a href=#concept-input-min title=concept-input-min>minimum</a>, which is less than or equal to the <a href=#concept-input-max title=concept-input-max>maximum</a>, if there is a number that matches these constraints.
+ If two numbers match these constraints, then user agents must use the one nearest to positive
+ infinity.</p>
+
+ <p>Whenever the user agent changes the element's <a href=#concept-fe-values title=concept-fe-values>values</a>
+ according to the three previous paragraphs, the user agent must set the element's <a href=#concept-fe-value title=concept-fe-value>value</a> to the result of concatenating the element's <a href=#concept-fe-values title=concept-fe-values>values</a>, separating them by a single U+002C COMMA character
+ (,), with the lower value coming first.</p>
+
+ </div>
+
+ </dd>
+
+ </dl><p>When the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute is set or removed, the
+ user agent must run the <a href=#value-sanitization-algorithm>value sanitization algorithm</a>.</p>
+
+ <p class=note>In this state, the range and step constraints are enforced even during user input,
+ and there is no way to set the value to the empty string.</p>
+
+ <p>The <code title=attr-input-min><a href=#attr-input-min>min</a></code> attribute, if specified, must have a value that is
+ a <a href=#valid-floating-point-number>valid floating-point number</a>. The <a href=#concept-input-min-default title=concept-input-min-default>default
+ minimum</a> is 0. The <code title=attr-input-max><a href=#attr-input-max>max</a></code> attribute, if specified, must
+ have a value that is a <a href=#valid-floating-point-number>valid floating-point number</a>. The <a href=#concept-input-max-default title=concept-input-max-default>default maximum</a> is 100.</p>
+
<p><span class=impl>The <a href=#concept-input-step-scale title=concept-input-step-scale>step scale factor</a> is
1.</span> The <a href=#concept-input-step-default title=concept-input-step-default>default step</a> is 1 (allowing only
integers, unless the <code title=attr-input-min><a href=#attr-input-min>min</a></code> attribute has a non-integer
@@ -41875,23 +42081,12 @@
<div class=impl>
- <p>When the element is <a href=#suffering-from-a-step-mismatch>suffering from a step mismatch</a>, the user agent must round the
- element's <a href=#concept-fe-value title=concept-fe-value>value</a> to the nearest number for which the element
- would not <a href=#suffering-from-a-step-mismatch title="suffering from a step mismatch">suffer from a step mismatch</a>, and
- which is greater than or equal to the <a href=#concept-input-min title=concept-input-min>minimum</a>, and, if the
- <a href=#concept-input-max title=concept-input-max>maximum</a> is not less than the <a href=#concept-input-min title=concept-input-min>minimum</a>, which is less than or equal to the <a href=#concept-input-max title=concept-input-max>maximum</a>, if there is a number that matches these constraints. If
- two numbers match these constraints, then user agents must use the one nearest to positive
- infinity.</p>
-
- <p class=example>For example, the markup
- <code><input type="range" min=0 max=100 step=20 value=50></code>
- results in a range control whose initial value is 60.</p>
-
<p><strong>The <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a
number</a>, given a string <var title="">input</var>, is as follows</strong>: If applying the
<a href=#rules-for-parsing-floating-point-number-values>rules for parsing floating-point number values</a> to <var title="">input</var> results
in an error, then return an error; otherwise, return the resulting number.</p>
+<!-- XXXX -->
<p><strong>The <a href=#concept-input-value-number-string title=concept-input-value-number-string>algorithm to convert a number to a
string</a>, given a number <var title="">input</var>, is as follows</strong>: Return a
<a href=#valid-floating-point-number>valid floating-point number</a> that represents <var title="">input</var>.</p>
@@ -41905,7 +42100,8 @@
<code title=attr-fe-autocomplete><a href=#attr-fe-autocomplete>autocomplete</a></code>,
<code title=attr-input-list><a href=#attr-input-list>list</a></code>,
<code title=attr-input-max><a href=#attr-input-max>max</a></code>,
- <code title=attr-input-min><a href=#attr-input-min>min</a></code>, and
+ <code title=attr-input-min><a href=#attr-input-min>min</a></code>,
+ <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code>, and
<code title=attr-input-step><a href=#attr-input-step>step</a></code> content attributes;
<code title=dom-input-list><a href=#dom-input-list>list</a></code>,
<code title=dom-input-value><a href=#dom-input-value>value</a></code>, and
@@ -41913,6 +42109,13 @@
<code title=dom-input-stepDown><a href=#dom-input-stepdown>stepDown()</a></code> and
<code title=dom-input-stepUp><a href=#dom-input-stepup>stepUp()</a></code> methods.</p>
+ <p>The following common <code><a href=#the-input-element>input</a></code> IDL attribute <a href=#concept-input-apply title=concept-input-apply>applies</a> to the element if the <code class=no-backref title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> content attribute is not specified:
+ <code title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>.</p>
+
+ <p>The following common <code><a href=#the-input-element>input</a></code> IDL attributes <a href=#concept-input-apply title=concept-input-apply>apply</a> to the element if the <code class=no-backref title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> content attribute <em>is</em> specified:
+ <code title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code> and
+ <code title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code>.</p>
+
<p>The <code title=dom-input-value><a href=#dom-input-value>value</a></code> IDL attribute is in mode <a href=#dom-input-value-value title=dom-input-value-value>value</a>.</p>
<p>The <code title=event-input-input><a href=#event-input-input>input</a></code> and <code title=event-input-change><a href=#event-input-change>change</a></code> events <a href=#concept-input-apply title=concept-input-apply>apply</a>.</p>
@@ -41932,7 +42135,6 @@
<code class=no-backref title=attr-fe-inputmode><a href=#attr-fe-inputmode>inputmode</a></code>,
<code class=no-backref title=attr-input-maxlength><a href=#attr-input-maxlength>maxlength</a></code>,
<code class=no-backref title=attr-input-minlength><a href=#attr-input-minlength>minlength</a></code>,
- <code class=no-backref title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code>,
<code class=no-backref title=attr-input-pattern><a href=#attr-input-pattern>pattern</a></code>,
<code class=no-backref title=attr-input-placeholder><a href=#attr-input-placeholder>placeholder</a></code>,
<code class=no-backref title=attr-input-readonly><a href=#attr-input-readonly>readonly</a></code>,
@@ -41946,14 +42148,28 @@
<code class=no-backref title=dom-input-files><a href=#dom-input-files>files</a></code>,
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
- <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>, and
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code> IDL attributes;
+ <code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>, and
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code> methods.</p>
+ <p>The following common <code><a href=#the-input-element>input</a></code> IDL attributes <a href=#do-not-apply>do not apply</a> to the
+ element if the <code class=no-backref title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> content
+ attribute is not specified:
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code> and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code>.</p>
+
+ <p>The following common <code><a href=#the-input-element>input</a></code> IDL attribute <a href=#do-not-apply title="do not apply">does not
+ apply</a> to the element if the <code class=no-backref title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> content attribute <em>is</em> specified:
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>.</p>
+
</div>
+ <!--CLEANUP--><!-- move these into the relevant subsection above -->
+
<div class=example>
<p>Here is an example of a range control using an autocomplete list with the <code title=attr-input-list><a href=#attr-input-list>list</a></code> attribute. This could be useful if there are values along the
@@ -42113,8 +42329,10 @@
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
<code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>,
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code>,
@@ -42216,8 +42434,10 @@
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
<code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>,
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code>,
@@ -42342,8 +42562,10 @@
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
<code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>,
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code>,
@@ -42577,8 +42799,10 @@
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
<code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>,
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code>,
@@ -42669,8 +42893,10 @@
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
<code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>,
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code>,
@@ -42868,8 +43094,10 @@
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
<code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>,
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code>,
@@ -42975,8 +43203,10 @@
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
<code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>,
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code>,
@@ -43055,8 +43285,10 @@
<code class=no-backref title=dom-textarea/input-selectionStart><a href=#dom-textarea/input-selectionstart>selectionStart</a></code>,
<code class=no-backref title=dom-textarea/input-selectionEnd><a href=#dom-textarea/input-selectionend>selectionEnd</a></code>,
<code class=no-backref title=dom-textarea/input-selectionDirection><a href=#dom-textarea/input-selectiondirection>selectionDirection</a></code>,
- <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>, and
- <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> IDL attributes;
+ <code class=no-backref title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code>,
+ <code class=no-backref title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code>,
+ <code class=no-backref title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, and
+ <code class=no-backref title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> IDL attributes;
<code class=no-backref title=dom-textarea/input-select><a href=#dom-textarea/input-select>select()</a></code>,
<code class=no-backref title=dom-textarea/input-setRangeText><a href=#dom-textarea/input-setrangetext>setRangeText()</a></code>,
<code class=no-backref title=dom-textarea/input-setSelectionRange><a href=#dom-textarea/input-setselectionrange>setSelectionRange()</a></code>,
@@ -43336,6 +43568,9 @@
<h6 id=the-pattern-attribute><span class=secno>4.10.5.3.6 </span>The <code title=attr-input-pattern><a href=#attr-input-pattern>pattern</a></code> attribute</h6>
+ <!-- if more text control types start supporting multiple="", this will need to be refactored -->
+
+<!--XXXXX-->
<p>The <dfn id=attr-input-pattern title=attr-input-pattern><code>pattern</code></dfn> attribute specifies a regular
expression against which the control's <a href=#concept-fe-value title=concept-fe-value>value</a>, or, when the
<code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute <a href=#concept-input-apply title=concept-input-apply>applies</a> and is set, the control's <a href=#concept-fe-values title=concept-fe-values>value<em>s</em></a>, are to be checked.</p>
@@ -43359,6 +43594,7 @@
entirety of the element's <a href=#concept-fe-value title=concept-fe-value>value</a>, then the element is
<a href=#suffering-from-a-pattern-mismatch>suffering from a pattern mismatch</a>.</p>
+<!--XXXXX-->
<p><strong>Constraint validation</strong>: If the element's <a href=#concept-fe-value title=concept-fe-value>value</a> is not the empty string, and the element's <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute is specified and <a href=#concept-input-apply title=concept-input-apply>applies</a> to the <code><a href=#the-input-element>input</a></code> element, and the element has
a <a href=#compiled-pattern-regular-expression>compiled pattern regular expression</a> but that regular expression does not match the
entirety of each of the element's <a href=#concept-fe-values title=concept-fe-values>value<em>s</em></a>, then the
@@ -43405,9 +43641,11 @@
<code title=attr-input-title><a href=#attr-input-title>title</a></code>s as if an error has necessarily occurred.</p>
-
+<!--CLEANUP-->
<h6 id=the-min-and-max-attributes><span class=secno>4.10.5.3.7 </span>The <code title=attr-input-min><a href=#attr-input-min>min</a></code> and <code title=attr-input-max><a href=#attr-input-max>max</a></code> attributes</h6>
+ <!-- if more numeric control types start supporting multiple="", this will need to be refactored -->
+
<p>Some form controls can have explicit constraints applied limiting the allowed range of values
that the user can provide. Normally, such a range would be linear and continuous. A form control
can <dfn id=has-a-periodic-domain title="has a periodic domain">have a periodic domain</dfn>, however, in which case the
@@ -43460,26 +43698,56 @@
<div class=impl>
- <p><strong>Constraint validation</strong>: When the element has a <a href=#attr-input-min title=attr-input-min>minimum</a> and does not <a href=#has-a-reversed-range title="has a reversed range">have a
- reversed range</a>, and the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a> to the
- string given by the element's <a href=#concept-fe-value title=concept-fe-value>value</a> is a number, and the
- number obtained from that algorithm is less than the <a href=#attr-input-min title=attr-input-min>minimum</a>,
- the element is <a href=#suffering-from-an-underflow>suffering from an underflow</a>.</p>
+ <p>How these range limitations apply depends on whether the element has a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute.</p>
- <p><strong>Constraint validation</strong>: When the element has a <a href=#attr-input-max title=attr-input-max>maximum</a> and does not <a href=#has-a-reversed-range title="has a reversed range">have a
- reversed range</a>, and the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a> to the
- string given by the element's <a href=#concept-fe-value title=concept-fe-value>value</a> is a number, and the
- number obtained from that algorithm is more than the <a href=#attr-input-max title=attr-input-max>maximum</a>,
- the element is <a href=#suffering-from-an-overflow>suffering from an overflow</a>.</p>
+ <dl class=switch><dt>If the element does not have a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute
+ specified or if the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute <a href=#do-not-apply title="do
+ not apply">does not apply</a></dt>
- <p><strong>Constraint validation</strong>: When an element <a href=#has-a-reversed-range>has a reversed range</a>, and
- the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a
- string to a number</a> to the string given by the element's <a href=#concept-fe-value title=concept-fe-value>value</a> is a number, and the number obtained from that algorithm is
- more than the <a href=#attr-input-max title=attr-input-max>maximum</a> <em>and</em> less than the <a href=#attr-input-min title=attr-input-min>minimum</a>, the element is simultaneously <a href=#suffering-from-an-underflow>suffering from an
- underflow</a> and <a href=#suffering-from-an-overflow>suffering from an overflow</a>.</p>
+ <dd><!--CLEANUP--><!--x3-->
- </div>
+ <p><strong>Constraint validation</strong>: When the element has a <a href=#attr-input-min title=attr-input-min>minimum</a> and does not <a href=#has-a-reversed-range title="has a reversed range">have a
+ reversed range</a>, and the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a> to the
+ string given by the element's <a href=#concept-fe-value title=concept-fe-value>value</a> is a number, and the
+ number obtained from that algorithm is less than the <a href=#attr-input-min title=attr-input-min>minimum</a>,
+ the element is <a href=#suffering-from-an-underflow>suffering from an underflow</a>.</p>
+ <p><strong>Constraint validation</strong>: When the element has a <a href=#attr-input-max title=attr-input-max>maximum</a> and does not <a href=#has-a-reversed-range title="has a reversed range">have a
+ reversed range</a>, and the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a> to the
+ string given by the element's <a href=#concept-fe-value title=concept-fe-value>value</a> is a number, and the
+ number obtained from that algorithm is more than the <a href=#attr-input-max title=attr-input-max>maximum</a>,
+ the element is <a href=#suffering-from-an-overflow>suffering from an overflow</a>.</p>
+
+ <p><strong>Constraint validation</strong>: When an element <a href=#has-a-reversed-range>has a reversed range</a>, and
+ the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a
+ string to a number</a> to the string given by the element's <a href=#concept-fe-value title=concept-fe-value>value</a> is a number, and the number obtained from that algorithm is
+ more than the <a href=#attr-input-max title=attr-input-max>maximum</a> <em>and</em> less than the <a href=#attr-input-min title=attr-input-min>minimum</a>, the element is simultaneously <a href=#suffering-from-an-underflow>suffering from an
+ underflow</a> and <a href=#suffering-from-an-overflow>suffering from an overflow</a>.</p>
+
+ </dd>
+
+ <dt>If the element does have a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute
+ specified and the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute does <a href=#concept-input-apply title=concept-input-apply>apply</a></dt>
+
+ <dd>
+
+ <p><strong>Constraint validation</strong>: When the element has a <a href=#attr-input-min title=attr-input-min>minimum</a>, and the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a> to
+ any of the strings in the element's <a href=#concept-fe-values title=concept-fe-values>values</a> is a number
+ that is less than the <a href=#attr-input-min title=attr-input-min>minimum</a>, the element is
+ <a href=#suffering-from-an-underflow>suffering from an underflow</a>.</p>
+
+ <p><strong>Constraint validation</strong>: When the element has a <a href=#attr-input-max title=attr-input-max>maximum</a>, and the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a> to
+ any of the strings in the element's <a href=#concept-fe-values title=concept-fe-values>values</a> is a number
+ that is more than the <a href=#attr-input-max title=attr-input-max>maximum</a>, the element is
+ <a href=#suffering-from-an-overflow>suffering from an overflow</a>.</p>
+
+ <!-- currently multiple="" only applies to type=range, which can't have a reversed range or a
+ periodic domain -->
+
+ </dd>
+
+ </dl></div>
+
<div class=example>
<p>The following date control limits input to dates that are before the 1980s:</p>
@@ -43509,8 +43777,11 @@
<h6 id=the-step-attribute><span class=secno>4.10.5.3.8 </span>The <code title=attr-input-step><a href=#attr-input-step>step</a></code> attribute</h6>
+ <!-- if more numeric control types start supporting multiple="", this will need to be refactored -->
+
+<!--CLEANUP-->
<p>The <dfn id=attr-input-step title=attr-input-step><code>step</code></dfn> attribute indicates the granularity
- that is expected (and required) of the <a href=#concept-fe-value title=concept-fe-value>value</a>, by limiting
+ that is expected (and required) of the <a href=#concept-fe-value title=concept-fe-value>value</a> or <a href=#concept-fe-values title=concept-fe-values>values</a>, by limiting
the allowed values. <span class=impl>The section that defines the <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute's current state also defines the <dfn id=concept-input-step-default title=concept-input-step-default>default step</dfn>, the <dfn id=concept-input-step-scale title=concept-input-step-scale>step scale factor</dfn>, and in some cases the <dfn id=concept-input-step-default-base title=concept-input-step-default-base>default step base</dfn>, which are used in processing the
attribute as described below.</span></p>
@@ -43549,25 +43820,71 @@
string to a number</a> to the value of the <code title=attr-input-min><a href=#attr-input-min>min</a></code> content
attribute is not an error, then return that result and abort these steps.</li>
- <li><p>If the element has a <code title=attr-input-value><a href=#attr-input-value>value</a></code> content attribute, and
- the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a
- string to a number</a> to the value of the <code title=attr-input-value><a href=#attr-input-value>value</a></code> content
- attribute is not an error, then return that result and abort these steps.</li>
+ <li>
+<!--CLEANUP-->
+ <p>If the element does not have a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute
+ specified or if the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute <a href=#do-not-apply title="do not apply">does not
+ apply</a>, then: if the element has a <code title=attr-input-value><a href=#attr-input-value>value</a></code> content attribute, and
+ the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a
+ string to a number</a> to the value of the <code title=attr-input-value><a href=#attr-input-value>value</a></code> content
+ attribute is not an error, then return that result and abort these steps.</p>
+
+ <p>Otherwise, the element's <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute is in the <a href="#range-state-(type=range)" title=attr-input-type-range>Range</a> state and the element has a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute specified<!--, and the <code
+ title="attr-input-multiple">multiple</code> attribute does <span
+ title="concept-input-apply">apply</span>-->: run these substeps:</p>
+
+ <ol><li><p>If the element does not have a <code title=attr-input-value><a href=#attr-input-value>value</a></code> content
+ attribute, skip these substeps.</li>
+
+ <li><p><a href=#split-a-string-on-commas title="split a string on commas">Split on commas</a> the value of the <code title=attr-input-value><a href=#attr-input-value>value</a></code> content attribute.</li>
+
+ <li><p>If the result of the previous step was not exactly two values, both of which are <a href=#valid-floating-point-number title="valid floating-point number">valid floating-point numbers</a>, then skip these
+ substeps.</li>
+
+<!--XXXX-->
+ <li><p>Return the number represented by the lower of the two values, and abort these
+ steps.</li>
+
+ </ol></li>
+
<li><p>If a <a href=#concept-input-step-default-base title=concept-input-step-default-base>default step base</a> is defined for
this element given its <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute's state, then return
it and abort these steps.</p>
<li><p>Return zero.</li>
- </ol><p><strong>Constraint validation</strong>: When the element has an <a href=#concept-input-step title=concept-input-step>allowed value step</a>, and the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a> to the
- string given by the element's <a href=#concept-fe-value title=concept-fe-value>value</a> is a number, and that
- number subtracted from the <a href=#concept-input-min-zero title=concept-input-min-zero>step base</a> is not an
- integral multiple of the <a href=#concept-input-step title=concept-input-step>allowed value step</a>, the element
- is <a href=#suffering-from-a-step-mismatch>suffering from a step mismatch</a>.</p>
+ </ol><p>How these range limitations apply depends on whether the element has a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute.</p>
- </div>
+ <dl class=switch><dt>If the element does not have a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute
+ specified or if the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute <a href=#do-not-apply title="do
+ not apply">does not apply</a></dt>
+ <dd><!--CLEANUP-->
+
+ <p><strong>Constraint validation</strong>: When the element has an <a href=#concept-input-step title=concept-input-step>allowed value step</a>, and the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a> to the
+ string given by the element's <a href=#concept-fe-value title=concept-fe-value>value</a> is a number, and that
+ number subtracted from the <a href=#concept-input-min-zero title=concept-input-min-zero>step base</a> is not an
+ integral multiple of the <a href=#concept-input-step title=concept-input-step>allowed value step</a>, the element
+ is <a href=#suffering-from-a-step-mismatch>suffering from a step mismatch</a>.</p>
+
+ </dd>
+
+ <dt>If the element does have a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute
+ specified and the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute does <a href=#concept-input-apply title=concept-input-apply>apply</a></dt>
+
+ <dd>
+
+ <p><strong>Constraint validation</strong>: When the element has an <a href=#attr-input-step title=attr-input-step>allowed value step</a>, and the result of applying the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a> to
+ any of the strings in the element's <a href=#concept-fe-values title=concept-fe-values>values</a> is a number
+ that, when subtracted from the <a href=#concept-input-min-zero title=concept-input-min-zero>step base</a>, is not an
+ integral multiple of the <a href=#concept-input-step title=concept-input-step>allowed value step</a>, the
+ element is <a href=#suffering-from-a-step-mismatch>suffering from a step mismatch</a>.</p>
+
+ </dd>
+
+ </dl></div>
+
<div class=example>
<p>The following range control only accepts values in the range 0..1, and allows 256 steps in
@@ -43592,6 +43909,8 @@
<h6 id=the-list-attribute><span class=secno>4.10.5.3.9 </span>The <code title=attr-input-list><a href=#attr-input-list>list</a></code> attribute</h6>
+ <!-- if we add any more types of controls, the handling of multiple="" below needs refactoring -->
+
<p>The <dfn id=attr-input-list title=attr-input-list><code>list</code></dfn> attribute is used to identify an
element that lists predefined options suggested to the user.</p>
@@ -43617,8 +43936,8 @@
accepting a single value only, or whether it accepts multiple values:</p>
<dl class=switch><dt>If the element does not have a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute
- specified or if the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute does <span>not
- apply</span></dt>
+ specified or if the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute <a href=#do-not-apply title="do
+ not apply">does not apply</a></dt>
<dd>
@@ -43626,12 +43945,28 @@
</dd>
- <dt>If the element <em>does</em> have a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code>
- attribute specified, and the <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute does
- <a href=#concept-input-apply title=concept-input-apply>apply</a></dt>
+ <!-- multiple types where there's a fixed number of values-->
+ <dt>If the element's <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute is in the <a href="#range-state-(type=range)" title=attr-input-type-range>Range</a> state and the element has a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute specified<!--, and the <code
+ title="attr-input-multiple">multiple</code> attribute does <span
+ title="concept-input-apply">apply</span>--></dt>
<dd>
+ <p>When the user selects a suggestion, the user agent must identify which value in the element's
+ <a href=#concept-fe-values title=concept-fe-values>values</a> the user intended to update, and must then update
+ the element's <a href=#concept-fe-values title=concept-fe-values>values</a> so that the relevant value is
+ changed to the value given by the selected suggestion's <a href=#concept-option-value title=concept-option-value>value</a>, as if the user had himself set it to that value.</p>
+
+ </dd>
+
+ <!-- multiple types where there's a potentially growing number of values -->
+ <dt>If the element's <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute is in the <a href="#e-mail-state-(type=email)" title=attr-input-type-email>Email</a> state and the element has a <code title=attr-input-multiple><a href=#attr-input-multiple>multiple</a></code> attribute specified<!--, and the <code
+ title="attr-input-multiple">multiple</code> attribute does <span
+ title="concept-input-apply">apply</span>--></dt>
+
+ <dd>
+
+<!--XXXXX-->
<p>When the user selects a suggestion, the user agent must either add a new entry to the
<code><a href=#the-input-element>input</a></code> element's <a href=#concept-fe-values title=concept-fe-values>value<em>s</em></a>, whose value
is the selected suggestion's <a href=#concept-option-value title=concept-option-value>value</a>, or change an
@@ -43845,6 +44180,20 @@
</dd>
+ <dt><var title="">input</var> . <code title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code> [ = <var title="">value</var> ]</dt>
+ <dt><var title="">input</var> . <code title=dom-input-valueHigh><a href=#dom-input-valuehigh>valueHigh</a></code> [ = <var title="">value</var> ]</dt>
+
+ <dd>
+
+ <p>Returns a number representing the low and high components of form control's <a href=#concept-fe-value title=concept-fe-value>value</a> respectively, if applicable; otherwise, returns NaN.</p>
+
+ <p>Can be set, to change the value.</p>
+
+ <p>Throws an <code><a href=#invalidstateerror>InvalidStateError</a></code> exception if the control is not a two-handle range
+ control.</p>
+
+ </dd>
+
<dt><var title="">input</var> . <code title=dom-input-stepUp><a href=#dom-input-stepup>stepUp</a></code>( [ <var title="">n</var> ] )</dt>
<dt><var title="">input</var> . <code title=dom-input-stepDown><a href=#dom-input-stepdown>stepDown</a></code>( [ <var title="">n</var> ] )</dt>
@@ -43941,9 +44290,10 @@
<hr><p>The <dfn id=dom-input-valueasdate title=dom-input-valueAsDate><code>valueAsDate</code></dfn> IDL attribute represents
the <a href=#concept-fe-value title=concept-fe-value>value</a> of the element, interpreted as a date.</p>
+<!--CLEANUP-->
<p>On getting, if the <code title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code> attribute <a href=#do-not-apply title="do not apply">does not apply</a>, as defined for the <code><a href=#the-input-element>input</a></code> element's <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute's current state, then return null. Otherwise, run
the <a href=#concept-input-value-string-date title=concept-input-value-string-date>algorithm to convert a string to a
- <code>Date</code> object</a> defined for that state; if the algorithm returned a
+ <code>Date</code> object</a> defined for that state to the element's <a href=#concept-fe-value title=concept-fe-value>value</a>; if the algorithm returned a
<code>Date</code> object, then return it, otherwise, return null.</p>
<p>On setting, if the <code title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAsDate</a></code> attribute <a href=#do-not-apply title="do not apply">does not apply</a>, as defined for the <code><a href=#the-input-element>input</a></code> element's <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute's current state, then throw an
@@ -43955,14 +44305,15 @@
represents the <a href=#concept-fe-value title=concept-fe-value>value</a> of the element, interpreted as a
number.</p>
+<!--CLEANUP-->
<p>On getting, if the <code title=dom-input-valueAsNumber><a href=#dom-input-valueasnumber>valueAsNumber</a></code> attribute <a href=#do-not-apply title="do not apply">does not apply</a>, as defined for the <code><a href=#the-input-element>input</a></code> element's <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute's current state, then return a Not-a-Number (NaN)
value. Otherwise, if the <code title=dom-input-valueAsDate><a href=#dom-input-valueasdate>valueAs<em>Date</em></a></code> attribute
<a href=#concept-input-apply title=concept-input-apply>applies</a>, run the <a href=#concept-input-value-string-date title=concept-input-value-string-date>algorithm to convert a string to a <code>Date</code>
- object</a> defined for that state; if the algorithm returned a <code>Date</code> object, then
+ object</a> defined for that state to the element's <a href=#concept-fe-value title=concept-fe-value>value</a>; if the algorithm returned a <code>Date</code> object, then
return the <i>time value</i> of the object (the number of milliseconds from midnight UTC the
morning of 1970-01-01 to the time represented by the <code>Date</code> object), otherwise, return
a Not-a-Number (NaN) value. Otherwise, run the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a> defined
- for that state; if the algorithm returned a number, then return it, otherwise, return a
+ for that state to the element's <a href=#concept-fe-value title=concept-fe-value>value</a>; if the algorithm returned a number, then return it, otherwise, return a
Not-a-Number (NaN) value.</p>
<p>On setting, if the new value is infinite, then throw a <code>TypeError</code> exception.
@@ -43977,7 +44328,50 @@
defined for that state, on the new value, and set the <a href=#concept-fe-value title=concept-fe-value>value</a>
of the element to the resulting string.</p>
- <hr><p>The <dfn id=dom-input-stepdown title=dom-input-stepDown><code>stepDown(<var title="">n</var>)</code></dfn> and <dfn id=dom-input-stepup title=dom-input-stepUp><code>stepUp(<var title="">n</var>)</code></dfn> methods, when invoked,
+ <hr><p>The <dfn id=dom-input-valuelow title=dom-input-valueLow><code>valueLow</code></dfn> and <dfn id=dom-input-valuehigh title=dom-input-valueHigh><code>valueHigh</code></dfn> IDL attributes represent the <a href=#concept-fe-value title=concept-fe-value>value</a> of the element, interpreted as a comma-separated pair of
+ numbers.</p>
+
+ <p>On getting, if the attributes <a href=#do-not-apply>do not apply</a>, as defined for the <code><a href=#the-input-element>input</a></code>
+ element's <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute's current state, then return zero;
+ otherwise, run the following steps:</p>
+
+ <ol><li><p>Let <var title="">values</var> be the <a href=#concept-fe-values title=concept-fe-values>values</a> of
+ the element, interpreted according to the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a>, as
+ defined by the <code><a href=#the-input-element>input</a></code> element's <code title=attr-input-type><a href=#attr-input-type>type</a></code>
+ attribute's current state.</li>
+
+ <li><p>If the attribute in question is <code title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, return
+ the lowest of the values in <var title="">values</var>; otherwise, return the highest of the
+ values in <var title="">values</var>.</li>
+
+ </ol><p>On setting, if the attributes <a href=#do-not-apply>do not apply</a>, as defined for the <code><a href=#the-input-element>input</a></code>
+ element's <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute's current state, then throw an
+ <code><a href=#invalidstateerror>InvalidStateError</a></code> exception. Otherwise, run the following steps:</p>
+
+ <ol><li><p>Let <var title="">values</var> be the <a href=#concept-fe-values title=concept-fe-values>values</a> of
+ the element, interpreted according to the <a href=#concept-input-value-string-number title=concept-input-value-string-number>algorithm to convert a string to a number</a>, as
+ defined by the <code><a href=#the-input-element>input</a></code> element's <code title=attr-input-type><a href=#attr-input-type>type</a></code>
+ attribute's current state.</li>
+
+ <li><p>Let <var title="">new value</var> be the result of running the <a href=#concept-input-value-number-string title=concept-input-value-number-string>algorithm to convert a number to a string</a>, as
+ defined for that state, on the new value.</li>
+
+ <li><p>If the attribute in question is <code title=dom-input-valueLow><a href=#dom-input-valuelow>valueLow</a></code>, replace
+ the lower value in <var title="">values</var> with <var title="">new value</var>; otherwise,
+ replace the higher value in <var title="">values</var> with <var title="">new
+ value</var>.</li>
+
+ <li><p>Sort <var title="">values</var> in increasing numeric order.</li>
+
+ <li><p>Let <a href=#concept-fe-values title=concept-fe-values>values</a> be the result of running the <a href=#concept-input-value-number-string title=concept-input-value-number-string>algorithm to convert a number to a string</a>, as
+ defined by the <code><a href=#the-input-element>input</a></code> element's <code title=attr-input-type><a href=#attr-input-type>type</a></code>
+ attribute's current state, to the values in <var title="">values</var>.</li>
+
+ <li><p>Set the element's <a href=#concept-fe-value title=concept-fe-value>value</a> to the concatenation of the
+ strings in in <a href=#concept-fe-values title=concept-fe-values>values</a>, separating each value from the next
+ by a U+002C COMMA character (,).</li>
+
+ </ol><hr><p>The <dfn id=dom-input-stepdown title=dom-input-stepDown><code>stepDown(<var title="">n</var>)</code></dfn> and <dfn id=dom-input-stepup title=dom-input-stepUp><code>stepUp(<var title="">n</var>)</code></dfn> methods, when invoked,
must run the following algorithm:</p>
<ol><li><p>If the <code title=dom-input-stepDown><a href=#dom-input-stepdown>stepDown()</a></code> and <code title=dom-input-stepUp><a href=#dom-input-stepup>stepUp()</a></code> methods <a href=#do-not-apply>do not apply</a>, as defined for the
@@ -48306,10 +48700,15 @@
<dd>The element's <a href=#concept-fe-values title=concept-fe-values>values</a>.</dd>
+<!--
+ <dt>An <code>input</code> element with its <code title="attr-input-type">type</code> attribute
+ in the <span title="attr-input-type-range">Range</span> state and with the <code
+ title="attr-input-multiple">multiple</code> attribute specified</dt>
+-->
<dt>Any other <code><a href=#the-input-element>input</a></code> element</dt>
<dt>A <code><a href=#the-textarea-element>textarea</a></code> element</dt>
- <dd>The element's <a href=#concept-fe-values title=concept-fe-values>value</a>.</dd>
+ <dd>The element's <a href=#concept-fe-value title=concept-fe-value>value</a>.</dd>
<dt>A <code><a href=#the-select-element>select</a></code> element with its <code title=attr-select-multiple><a href=#attr-select-multiple>multiple</a></code>
attribute specified</dt>
@@ -99858,12 +100257,12 @@
</table><p class=tablenote><small>An asterisk (*) in a cell indicates that the actual rules are more
complicated than indicated in the table above.</small></p>
- <p>† Categories in the "Parents" column refer to parents that list the given categories in
- their content model, not to elements that themselves are in those categories. For example, the
- <code><a href=#the-a-element>a</a></code> element's "Parents" column says "phrasing", so any element whose content model
- contains the "phrasing" category could be a parent of an <code><a href=#the-a-element>a</a></code> element. Since the "flow"
- category includes all the "phrasing" elements, that means the <code><a href=#the-th-element>th</a></code> element could be a
- parent to an <code><a href=#the-a-element>a</a></code> element.</p>
+ <p class=tablenote><small>† Categories in the "Parents" column refer to parents that list
+ the given categories in their content model, not to elements that themselves are in those
+ categories. For example, the <code><a href=#the-a-element>a</a></code> element's "Parents" column says "phrasing", so any
+ element whose content model contains the "phrasing" category could be a parent of an
+ <code><a href=#the-a-element>a</a></code> element. Since the "flow" category includes all the "phrasing" elements, that means
+ the <code><a href=#the-th-element>th</a></code> element could be a parent to an <code><a href=#the-a-element>a</a></code> element.</small></p>
Modified: source
===================================================================
--- source 2014-01-28 23:50:26 UTC (rev 8434)
+++ source 2014-01-29 20:40:26 UTC (rev 8435)
@@ -11773,7 +11773,8 @@
<tr>
<td><code>input</code> element with a <code data-x="attr-input-type">type</code> attribute in
- the <span data-x="attr-input-type-range">Range</span> state
+ the <span data-x="attr-input-type-range">Range</span> state and the <code
+ data-x="attr-input-multiple">multiple</code> attribute not specified
<td><code data-x="attr-aria-role-slider">slider</code> role, with the <code
data-x="attr-aria-valuemax">aria-valuemax</code> property set to the element's <span
@@ -11788,6 +11789,20 @@
<tr>
<td><code>input</code> element with a <code data-x="attr-input-type">type</code> attribute in
+ the <span data-x="attr-input-type-range">Range</span> state and the <code
+ data-x="attr-input-multiple">multiple</code> attribute not specified
+
+ <td><code data-x="attr-aria-valuemax">aria-valuemax</code> property set to the element's <span
+ data-x="concept-input-max">maximum</span>, and the <code
+ data-x="attr-aria-valuemin">aria-valuemin</code> property set to the element's <span
+ data-x="concept-input-min">minimum</span>
+
+ <!-- ARIA doesn't currently support a single element with two slider values, so leave the rest
+ undefined for now -->
+
+ <tr>
+
+ <td><code>input</code> element with a <code data-x="attr-input-type">type</code> attribute in
the <span data-x="attr-input-type-reset">Reset Button</span> state
<td><code data-x="attr-aria-role-button">button</code> role
@@ -42140,6 +42155,8 @@
[TreatNullAs=EmptyString] attribute DOMString <span data-x="dom-input-value">value</span>;
attribute <span>Date</span>? <span data-x="dom-input-valueAsDate">valueAsDate</span>;
attribute unrestricted double <span data-x="dom-input-valueAsNumber">valueAsNumber</span>;
+ attribute double <span data-x="dom-input-valueLow">valueLow</span>;
+ attribute double <span data-x="dom-input-valueHigh">valueHigh</span>;
attribute unsigned long <span data-x="dom-input-width">width</span>;
void <span data-x="dom-input-stepUp">stepUp</span>(optional long n = 1);
@@ -42302,6 +42319,7 @@
<p>The <i>missing value default</i> is the <span data-x="attr-input-type-text">Text</span>
state.</p>
+<!--CLEANUP--> <!-- prettify -->
<p>Which of the <code data-x="attr-input-accept">accept</code>, <code
data-x="attr-input-alt">alt</code>, <code data-x="attr-fe-autocomplete">autocomplete</code>, <code
data-x="attr-input-checked">checked</code>, <code data-x="attr-fe-dirname">dirname</code>, <code
@@ -42320,7 +42338,9 @@
data-x="attr-input-step">step</code>, and <code data-x="attr-dim-width">width</code> content
attributes, the <code data-x="dom-input-checked">checked</code>, <code
data-x="dom-input-files">files</code>, <code data-x="dom-input-valueAsDate">valueAsDate</code>,
- <code data-x="dom-input-valueAsNumber">valueAsNumber</code>, and <code
+ <code data-x="dom-input-valueAsNumber">valueAsNumber</code>,
+ <code data-x="dom-input-valueLow">valueLow</code>,
+ <code data-x="dom-input-valueHigh">valueHigh</code>, and <code
data-x="dom-input-list">list</code> IDL attributes, the <code
data-x="dom-textarea/input-select">select()</code> method, the <code
data-x="dom-textarea/input-selectionStart">selectionStart</code>, <code
@@ -42815,7 +42835,7 @@
<!-- <td class="no"> · Time -->
<td class="no"> · <!-- Local Date and Time -->
<td class="no"> · <!-- Number -->
- <td class="no"> · <!-- Range -->
+ <td class="yes"> Yes <!-- Range -->
<td class="no"> · <!-- Color -->
<td class="no"> · <!-- Checkbox -->
<!-- <td class="no"> · Radio Button -->
@@ -43144,7 +43164,7 @@
<!-- <td class="yes"> Yes Time -->
<td class="yes"> Yes <!-- Local Date and Time -->
<td class="yes"> Yes <!-- Number -->
- <td class="yes"> Yes <!-- Range -->
+ <td class="yes"> Yes* <!-- Range -->
<td class="no"> · <!-- Color -->
<td class="no"> · <!-- Checkbox -->
<!-- <td class="no"> · Radio Button -->
@@ -43155,6 +43175,56 @@
<!-- <td class="no"> · Button -->
<tr>
+ <th> <code data-x="dom-input-valueLow">valueLow</code>
+ <td class="no"> · <!-- Hidden -->
+ <td class="no"> · <!-- Text -->
+<!-- <td class="no"> · Search -->
+ <td class="no"> · <!-- URL, Telephone -->
+ <td class="no"> · <!-- E-mail -->
+ <td class="no"> · <!-- Password -->
+ <td class="no"> · <!-- Date and Time -->
+<!-- <td class="no"> · Date -->
+<!-- <td class="no"> · Month -->
+<!-- <td class="no"> · Week -->
+<!-- <td class="no"> · Time -->
+ <td class="no"> · <!-- Local Date and Time -->
+ <td class="no"> · <!-- Number -->
+ <td class="yes"> Yes** <!-- Range -->
+ <td class="no"> · <!-- Color -->
+ <td class="no"> · <!-- Checkbox -->
+<!-- <td class="no"> · Radio Button -->
+ <td class="no"> · <!-- File Upload -->
+ <td class="no"> · <!-- Submit Button -->
+ <td class="no"> · <!-- Image Button -->
+ <td class="no"> · <!-- Reset Button -->
+<!-- <td class="no"> · Button -->
+
+ <tr>
+ <th> <code data-x="dom-input-valueHigh">valueHigh</code>
+ <td class="no"> · <!-- Hidden -->
+ <td class="no"> · <!-- Text -->
+<!-- <td class="no"> · Search -->
+ <td class="no"> · <!-- URL, Telephone -->
+ <td class="no"> · <!-- E-mail -->
+ <td class="no"> · <!-- Password -->
+ <td class="no"> · <!-- Date and Time -->
+<!-- <td class="no"> · Date -->
+<!-- <td class="no"> · Month -->
+<!-- <td class="no"> · Week -->
+<!-- <td class="no"> · Time -->
+ <td class="no"> · <!-- Local Date and Time -->
+ <td class="no"> · <!-- Number -->
+ <td class="yes"> Yes** <!-- Range -->
+ <td class="no"> · <!-- Color -->
+ <td class="no"> · <!-- Checkbox -->
+<!-- <td class="no"> · Radio Button -->
+ <td class="no"> · <!-- File Upload -->
+ <td class="no"> · <!-- Submit Button -->
+ <td class="no"> · <!-- Image Button -->
+ <td class="no"> · <!-- Reset Button -->
+<!-- <td class="no"> · Button -->
+
+ <tr>
<th> <code data-x="dom-input-list">list</code>
<td class="no"> · <!-- Hidden -->
<td class="yes"> Yes <!-- Text -->
@@ -43435,11 +43505,18 @@
</table>
+ <p class="tablenote"><small>* If the <code data-x="attr-input-multiple">multiple</code> attribute
+ is not specified.</small></p>
+
+ <p class="tablenote"><small>** If the <code data-x="attr-input-multiple">multiple</code> attribute
+ <em>is</em> specified.</small></p>
+
<div class="impl">
<p>Some states of the <code data-x="attr-input-type">type</code> attribute define a <dfn>value
sanitization algorithm</dfn>.</p>
+<!--CLEANUP-->
<p>Each <code>input</code> element has a <span data-x="concept-fe-value">value</span>, which is
exposed by the <code data-x="dom-input-value">value</code> IDL attribute. Some states define an
<dfn data-x="concept-input-value-string-number">algorithm to convert a string to a number</dfn>, an
@@ -43450,6 +43527,8 @@
data-x="attr-input-max">max</code>, <code data-x="attr-input-min">min</code>, <code
data-x="attr-input-step">step</code>, <code data-x="dom-input-valueAsDate">valueAsDate</code>, <code
data-x="dom-input-valueAsNumber">valueAsNumber</code>, <code
+ data-x="dom-input-valueLow">valueLow</code>, <code
+ data-x="dom-input-valueHigh">valueHigh</code>, <code
data-x="dom-input-stepDown">stepDown()</code>, and <code
data-x="dom-input-stepUp">stepUp()</code>.</p>
@@ -43738,8 +43817,10 @@
<code class="no-backref" data-x="dom-textarea/input-selectionStart">selectionStart</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>,
- <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>, and
- <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code> IDL attributes;
+ <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>,
+ <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-textarea/input-select">select()</code>,
<code class="no-backref" data-x="dom-textarea/input-setRangeText">setRangeText()</code>,
<code class="no-backref" data-x="dom-textarea/input-setSelectionRange">setSelectionRange()</code>,
@@ -43866,8 +43947,10 @@
element:
<code class="no-backref" data-x="dom-input-checked">checked</code>,
<code class="no-backref" data-x="dom-input-files">files</code>,
- <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>, and
- <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code> IDL attributes;
+ <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>,
+ <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-input-stepDown">stepDown()</code> and
<code class="no-backref" data-x="dom-input-stepUp">stepUp()</code> methods.</p>
@@ -43968,8 +44051,10 @@
element:
<code class="no-backref" data-x="dom-input-checked">checked</code>,
<code class="no-backref" data-x="dom-input-files">files</code>,
- <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>, and
- <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code> IDL attributes;
+ <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>,
+ <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-input-stepDown">stepDown()</code> and
<code class="no-backref" data-x="dom-input-stepUp">stepUp()</code> methods.</p>
@@ -44072,8 +44157,10 @@
element:
<code class="no-backref" data-x="dom-input-checked">checked</code>,
<code class="no-backref" data-x="dom-input-files">files</code>,
- <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>, and
- <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code> IDL attributes;
+ <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>,
+ <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-input-stepDown">stepDown()</code> and
<code class="no-backref" data-x="dom-input-stepUp">stepUp()</code> methods.</p>
@@ -44167,9 +44254,6 @@
line breaks</span> from the <span data-x="concept-fe-value">value</span>, then <span>strip
leading and trailing whitespace</span> from the <span data-x="concept-fe-value">value</span>.</p>
- <p>When the <code data-x="attr-input-multiple">multiple</code> attribute is removed, the user
- agent must run the <span>value sanitization algorithm</span>.</p>
-
<p><strong>Constraint validation</strong>: While the <span data-x="concept-fe-value">value</span>
of the element is neither the empty string nor a single <span>valid e-mail address</span>, the
element is <span>suffering from a type mismatch</span>.</p>
@@ -44183,20 +44267,14 @@
<dd>
- <div class="impl">
-
- <p>The element's <span data-x="concept-fe-values">value<em>s</em></span> are the result of <span
- data-x="split a string on commas">splitting on commas</span> the element's <span
- data-x="concept-fe-value">value</span>.</p>
-
- </div>
-
+<!--XXXXX-->
<p>The <code>input</code> element <span>represents</span> a control for adding, removing, and
editing the e-mail addresses given in the element's <span
data-x="concept-fe-values">value<em>s</em></span>.</p>
<div class="impl">
+<!--XXXXX-->
<p>If the element is <i data-x="concept-fe-mutable">mutable</i>, the user agent should allow the
user to add, remove, and edit the e-mail addresses represented by its <span
data-x="concept-fe-values">value<em>s</em></span>. User agents may allow the user to set any
@@ -44245,6 +44323,7 @@
<ol>
+<!--XXXXX-->
<li><p><span data-x="split a string on commas">Split on commas</span> the element's <span
data-x="concept-fe-value">value</span>, <span>strip leading and trailing whitespace</span> from
each resulting token, if any, and let the element's <span
@@ -44258,9 +44337,6 @@
</ol>
- <p>When the <code data-x="attr-input-multiple">multiple</code> attribute is set, the user agent
- must run the <span>value sanitization algorithm</span>.</p>
-
<p><strong>Constraint validation</strong>: While the <span data-x="concept-fe-value">value</span>
of the element is not a <span>valid e-mail address list</span>, the element is <span>suffering
from a type mismatch</span>.</p>
@@ -44271,6 +44347,9 @@
</dl>
+ <p>When the <code data-x="attr-input-multiple">multiple</code> attribute is set or removed, the
+ user agent must run the <span>value sanitization algorithm</span>.</p>
+
<p>A <dfn>valid e-mail address</dfn> is a string that matches the <code data-x="">email</code>
production of the following ABNF, the character set for which is Unicode. This ABNF implements the
extensions described in RFC 1123. <a href="#refsABNF">[ABNF]</a> <a
@@ -44367,8 +44446,10 @@
<code class="no-backref" data-x="dom-textarea/input-selectionStart">selectionStart</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>,
- <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>, and
- <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code> IDL attributes;
+ <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>,
+ <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-textarea/input-select">select()</code>,
<code class="no-backref" data-x="dom-textarea/input-setRangeText">setRangeText()</code>,
<code class="no-backref" data-x="dom-textarea/input-setSelectionRange">setSelectionRange()</code>,
@@ -44463,8 +44544,10 @@
<code class="no-backref" data-x="dom-input-checked">checked</code>,
<code class="no-backref" data-x="dom-input-files">files</code>,
<code class="no-backref" data-x="dom-input-list">list</code>,
- <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>, and
- <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code> IDL attributes;
+ <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>,
+ <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-input-stepDown">stepDown()</code> and
<code class="no-backref" data-x="dom-input-stepUp">stepUp()</code> methods.</p>
@@ -44646,8 +44729,10 @@
<code class="no-backref" data-x="dom-input-checked">checked</code>,
<code class="no-backref" data-x="dom-input-files">files</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionStart">selectionStart</code>,
- <code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>, and
- <code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code> IDL attributes;
+ <code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>,
+ <code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-textarea/input-select">select()</code>,
<code class="no-backref" data-x="dom-textarea/input-setRangeText">setRangeText()</code>, and
<code class="no-backref" data-x="dom-textarea/input-setSelectionRange">setSelectionRange()</code> methods.</p>
@@ -44828,8 +44913,10 @@
element:
<code class="no-backref" data-x="dom-input-checked">checked</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionStart">selectionStart</code>,
- <code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>, and
- <code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code> IDL attributes;
+ <code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>,
+ <code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-textarea/input-select">select()</code>,
<code class="no-backref" data-x="dom-textarea/input-setRangeText">setRangeText()</code>, and
<code class="no-backref" data-x="dom-textarea/input-setSelectionRange">setSelectionRange()</code> methods.</p>
@@ -44981,8 +45068,10 @@
<code class="no-backref" data-x="dom-input-checked">checked</code>,
<code class="no-backref" data-x="dom-input-files">files</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionStart">selectionStart</code>,
- <code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>, and
- <code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code> IDL attributes;
+ <code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>,
+ <code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-textarea/input-select">select()</code>,
<code class="no-backref" data-x="dom-textarea/input-setRangeText">setRangeText()</code>, and
<code class="no-backref" data-x="dom-textarea/input-setSelectionRange">setSelectionRange()</code> methods.</p>
@@ -45136,8 +45225,10 @@
<code class="no-backref" data-x="dom-input-checked">checked</code>,
<code class="no-backref" data-x="dom-input-files">files</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionStart">selectionStart</code>,
- <code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>, and
- <code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code> IDL attributes;
+ <code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>,
+ <code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-textarea/input-select">select()</code>,
<code class="no-backref" data-x="dom-textarea/input-setRangeText">setRangeText()</code>, and
<code class="no-backref" data-x="dom-textarea/input-setSelectionRange">setSelectionRange()</code> methods.</p>
@@ -45288,8 +45379,10 @@
<code class="no-backref" data-x="dom-input-checked">checked</code>,
<code class="no-backref" data-x="dom-input-files">files</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionStart">selectionStart</code>,
- <code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>, and
- <code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code> IDL attributes;
+ <code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>,
+ <code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-textarea/input-select">select()</code>,
<code class="no-backref" data-x="dom-textarea/input-setRangeText">setRangeText()</code>, and
<code class="no-backref" data-x="dom-textarea/input-setSelectionRange">setSelectionRange()</code> methods.</p>
@@ -45436,8 +45529,10 @@
<code class="no-backref" data-x="dom-input-files">files</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionStart">selectionStart</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>,
- <code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>, and
- <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code> IDL attributes;
+ <code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>,
+ <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-textarea/input-select">select()</code>,
<code class="no-backref" data-x="dom-textarea/input-setRangeText">setRangeText()</code>, and
<code class="no-backref" data-x="dom-textarea/input-setSelectionRange">setSelectionRange()</code> methods.</p>
@@ -45602,8 +45697,10 @@
<code class="no-backref" data-x="dom-input-files">files</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionStart">selectionStart</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>,
- <code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>, and
- <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code> IDL attributes;
+ <code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>,
+ <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-textarea/input-select">select()</code>,
<code class="no-backref" data-x="dom-textarea/input-setRangeText">setRangeText()</code>, and
<code class="no-backref" data-x="dom-textarea/input-setSelectionRange">setSelectionRange()</code> methods.</p>
@@ -45646,76 +45743,218 @@
</div>
- <p>The <code>input</code> element <span>represents</span> a control for setting the element's
- <span data-x="concept-fe-value">value</span> to a string representing a number, but with the caveat
- that the exact value is not important, letting UAs provide a simpler interface than they do for
- the <span data-x="attr-input-type-number">Number</span> state.</p>
+ <p>How the <span data-x="attr-input-type-range">Range</span> state operates depends on whether the
+ <code data-x="attr-input-multiple">multiple</code> attribute is specified or not.</p>
- <div class="impl">
+ <dl class="switch">
- <p class="note">In this state, the range and step constraints are enforced even during user input,
- and there is no way to set the value to the empty string.</p>
+ <dt>When the <code data-x="attr-input-multiple">multiple</code> attribute is not specified on the
+ element</dt>
- <p>If the element is <i data-x="concept-fe-mutable">mutable</i>, the user agent should allow the
- user to change the number represented by its <span data-x="concept-fe-value">value</span>, as
- obtained from applying the <span>rules for parsing floating-point number values</span> to it. User
- agents must not allow the user to set the <span data-x="concept-fe-value">value</span> to a string
- that is not a <span>valid floating-point number</span>. If the user agent provides a user
- interface for selecting a number, then the <span data-x="concept-fe-value">value</span> must be set
- to a <span data-x="best representation of the number as a floating-point number">best
- representation of the number representing the user's selection as a floating-point number</span>.
- User agents must not allow the user to set the <span data-x="concept-fe-value">value</span> to the
- empty string.</p>
+ <dd>
+ <!--CLEANUP--> <!-- whole subsection -->
- <p><strong>Constraint validation</strong>: While the user interface describes input that the user
- agent cannot convert to a <span>valid floating-point number</span>, the control is <span>suffering
- from bad input</span>.</p>
+ <p>The <code>input</code> element <span>represents</span> a control for setting the element's
+ <span data-x="concept-fe-value">value</span> to a string representing a number, but with the caveat
+ that the exact value is not important, letting UAs provide a simpler interface than they do for
+ the <span data-x="attr-input-type-number">Number</span> state.</p>
- </div>
+ <div class="impl">
- <p>The <code data-x="attr-input-value">value</code> attribute, if specified, must have a value that
- is a <span>valid floating-point number</span>.</p> <!-- ok to set out-of-range value, we never
- know when we might have to represent bogus input; not ok to not have a value if the attribute is
- present, since you can't not have a value (attribute missing is treated as implying a default
- value) -->
+ <p>If the element is <i data-x="concept-fe-mutable">mutable</i>, the user agent should allow the
+ user to change the number represented by its <span data-x="concept-fe-value">value</span>, as
+ obtained from applying the <span>rules for parsing floating-point number values</span> to it. User
+ agents must not allow the user to set the <span data-x="concept-fe-value">value</span> to a string
+ that is not a <span>valid floating-point number</span>. If the user agent provides a user
+ interface for selecting a number, then the <span data-x="concept-fe-value">value</span> must be set
+ to a <span data-x="best representation of the number as a floating-point number">best
+ representation of the number representing the user's selection as a floating-point number</span>.
+ User agents must not allow the user to set the <span data-x="concept-fe-value">value</span> to the
+ empty string.</p>
- <div class="impl">
+ <p><strong>Constraint validation</strong>: While the user interface describes input that the user
+ agent cannot convert to a <span>valid floating-point number</span>, the control is <span>suffering
+ from bad input</span>.</p>
- <p><strong>The <span>value sanitization algorithm</span> is as follows</strong>: If the <span
- data-x="concept-fe-value">value</span> of the element is not a <span>valid floating-point
- number</span>, then set it to a <span>valid floating-point number</span> that represents the <span
- data-x="concept-input-value-default-range">default value</span>.</p>
+ </div>
- </div>
+ <p>The <code data-x="attr-input-value">value</code> attribute, if specified, must have a value that
+ is a <span>valid floating-point number</span>.</p> <!-- ok to set out-of-range value, we never
+ know when we might have to represent bogus input; not ok to not have a value if the attribute is
+ present, since you can't not have a value (attribute missing is treated as implying a default
+ value) -->
+ <div class="impl">
+
+<!-- XXXX -->
+ <p><strong>The <span>value sanitization algorithm</span> is as follows</strong>: If the <span
+ data-x="concept-fe-value">value</span> of the element is not a <span>valid floating-point
+ number</span>, then set it to a <span>valid floating-point number</span> that represents the <span
+ data-x="concept-input-value-default-range">default value</span>.</p>
+
+ </div>
+
+ <p>The <dfn data-x="concept-input-value-default-range">default value</dfn> is the <span
+ data-x="concept-input-min">minimum</span> plus half the difference between the <span
+ data-x="concept-input-min">minimum</span> and the <span data-x="concept-input-max">maximum</span>,
+ unless the <span data-x="concept-input-max">maximum</span> is less than the <span
+ data-x="concept-input-min">minimum</span>, in which case the <span
+ data-x="concept-input-value-default-range">default value</span> is the <span
+ data-x="concept-input-min">minimum</span>.</p>
+
+ <div class="impl">
+
+<!-- XXXX -->
+ <p>When the element is <span>suffering from an underflow</span>, the user agent must set the
+ element's <span data-x="concept-fe-value">value</span> to a <span>valid floating-point
+ number</span> that represents the <span data-x="concept-input-min">minimum</span>.</p>
+
+ <p>When the element is <span>suffering from an overflow</span>, if the <span
+ data-x="concept-input-max">maximum</span> is not less than the <span
+ data-x="concept-input-min">minimum</span>, the user agent must set the element's <span
+ data-x="concept-fe-value">value</span> to a <span>valid floating-point number</span> that
+ represents the <span data-x="concept-input-max">maximum</span>.</p>
+
+ <p>When the element is <span>suffering from a step mismatch</span>, the user agent must round the
+ element's <span data-x="concept-fe-value">value</span> to the nearest number for which the element
+ would not <span data-x="suffering from a step mismatch">suffer from a step mismatch</span>, and
+ which is greater than or equal to the <span data-x="concept-input-min">minimum</span>, and, if the
+ <span data-x="concept-input-max">maximum</span> is not less than the <span
+ data-x="concept-input-min">minimum</span>, which is less than or equal to the <span
+ data-x="concept-input-max">maximum</span>, if there is a number that matches these constraints. If
+ two numbers match these constraints, then user agents must use the one nearest to positive
+ infinity.</p>
+
+ <p class="example">For example, the markup
+ <code><input type="range" min=0 max=100 step=20 value=50></code>
+ results in a range control whose initial value is 60.</p>
+
+ </div>
+
+ </dd>
+
+ <dt>When the <code data-x="attr-input-multiple">multiple</code> attribute <em>is</em> specified on
+ the element</dt>
+
+ <dd>
+
+ <p>The <code>input</code> element <span>represents</span> a control for setting the element's
+ <span data-x="concept-fe-values">value<em>s</em></span> to two strings representing numbers, but
+ with the caveat that the exact values are not important, enabling UAs provide a graphical
+ interface rather than requiring the user to type the numbers directly.</p>
+
+ <div class="impl">
+
+ <p>If the element is <i data-x="concept-fe-mutable">mutable</i>, the user agent should allow the
+ user to change either the first or second number represented by its <span
+ data-x="concept-fe-values">values</span>, as obtained from applying the <span>rules for parsing
+ floating-point number values</span> to them, and ensuring that the first value is never larger
+ than the second value. User agents must not allow the user to set either the first or second of
+ the <span data-x="concept-fe-values">values</span> to a string that is not a <span>valid
+ floating-point number</span>. If the user agent provides a user interface for selecting a
+ number, then these <span data-x="concept-fe-values">values</span> must be set to the <span
+ data-x="best representation of the number as a floating-point number">best representations of
+ the numbers representing the user's selections as floating-point numbers</span>. User agents
+ must not allow the user to set the <span data-x="concept-fe-values">values</span> to the empty
+ string.</p>
+
+ <p><strong>Constraint validation</strong>: While the user interface describes input that the
+ user agent cannot convert to a pair of <span data-x="valid floating-point number">valid
+ floating-point numbers</span>, the control is <span>suffering from bad input</span>.</p>
+
+ </div>
+
+ <p>The <code data-x="attr-input-value">value</code> attribute, if specified, must have a value
+ that is a pair of <span data-x="valid floating-point number">valid floating-point numbers</span>
+ separated by a single U+002C COMMA character (,).</p> <!-- ok to set out-of-range value, we
+ never know when we might have to represent bogus input; not ok to not have both values if the
+ attribute is present, since you can't not have a value (attribute missing is treated as implying
+ default values) -->
+
+ <div class="impl">
+
+ <p><strong>The <span>value sanitization algorithm</span> is as follows</strong>:</p>
+
+ <ol>
+
+ <li><p><span data-x="split a string on commas">Split on commas</span> the element's <span
+ data-x="concept-fe-value">value</span>.</p></li>
+
+ <li><p>If there are not exactly two values, or if either value is not a <span>valid
+ floating-point number</span>, then let the element's <span
+ data-x="concept-fe-values">values</span> be a pair of values consisting of <span data-x="best
+ representation of the number as a floating-point number">a best representation, as a
+ floating-point number</span>, of the element's <span data-x="concept-input-min">minimum</span>
+ and the element's <span data-x="concept-input-max">maximum</span>, with the smaller value
+ first.</p></li>
+
+ <li><p>Othwerwise, let the element's <span data-x="concept-fe-values">values</span> be the two
+ values, with the smaller value first.</p></li>
+
+<!--XXXXX-->
+ <li><p>Let the element's <span data-x="concept-fe-value">value</span> be the result of
+ concatenating the element's <span data-x="concept-fe-values">value<em>s</em></span>, separating
+ them by a single U+002C COMMA character (,), with the lower value coming first.</p></li>
+
+ </ol>
+
+ <p>Whenever the user changes the element's <span data-x="concept-fe-values">values</span>, the
+ user agent must set the element's <span data-x="concept-fe-value">value</span> to the result of
+ concatenating the element's <span data-x="concept-fe-values">values</span>, separating them by a
+ single U+002C COMMA character (,), with the lower value coming first.</p>
+
+ </div>
+
+ <div class="impl">
+
+<!-- XXXX -->
+ <p>When the element is <span>suffering from an underflow</span>, the user agent must set either
+ of the element's <span data-x="concept-fe-values">values</span> that represent values less than
+ the <span data-x="concept-input-min">minimum</span> to a <span>valid floating-point
+ number</span> that represents the <span data-x="concept-input-min">minimum</span>.</p>
+
+ <p>When the element is <span>suffering from an overflow</span>, if the <span
+ data-x="concept-input-max">maximum</span> is not less than the <span
+ data-x="concept-input-min">minimum</span>, the user agent must set either of the element's <span
+ data-x="concept-fe-values">values</span> that represent values greater than the <span
+ data-x="concept-input-max">maximum</span> to a <span>valid floating-point number</span> that
+ represents the <span data-x="concept-input-max">maximum</span>.</p>
+
+ <p>When the element is <span>suffering from a step mismatch</span>, the user agent must round
+ the values represented by the element's <span data-x="concept-fe-values">values</span> to, in
+ each case, the nearest number for which the element would not <span data-x="suffering from a
+ step mismatch">suffer from a step mismatch</span>, and which is greater than or equal to the
+ <span data-x="concept-input-min">minimum</span>, and, if the <span
+ data-x="concept-input-max">maximum</span> is not less than the <span
+ data-x="concept-input-min">minimum</span>, which is less than or equal to the <span
+ data-x="concept-input-max">maximum</span>, if there is a number that matches these constraints.
+ If two numbers match these constraints, then user agents must use the one nearest to positive
+ infinity.</p>
+
+ <p>Whenever the user agent changes the element's <span data-x="concept-fe-values">values</span>
+ according to the three previous paragraphs, the user agent must set the element's <span
+ data-x="concept-fe-value">value</span> to the result of concatenating the element's <span
+ data-x="concept-fe-values">values</span>, separating them by a single U+002C COMMA character
+ (,), with the lower value coming first.</p>
+
+ </div>
+
+ </dd>
+
+ </dl>
+
+ <p>When the <code data-x="attr-input-multiple">multiple</code> attribute is set or removed, the
+ user agent must run the <span>value sanitization algorithm</span>.</p>
+
+ <p class="note">In this state, the range and step constraints are enforced even during user input,
+ and there is no way to set the value to the empty string.</p>
+
<p>The <code data-x="attr-input-min">min</code> attribute, if specified, must have a value that is
a <span>valid floating-point number</span>. The <span data-x="concept-input-min-default">default
minimum</span> is 0. The <code data-x="attr-input-max">max</code> attribute, if specified, must
have a value that is a <span>valid floating-point number</span>. The <span
data-x="concept-input-max-default">default maximum</span> is 100.</p>
- <p>The <dfn data-x="concept-input-value-default-range">default value</dfn> is the <span
- data-x="concept-input-min">minimum</span> plus half the difference between the <span
- data-x="concept-input-min">minimum</span> and the <span data-x="concept-input-max">maximum</span>,
- unless the <span data-x="concept-input-max">maximum</span> is less than the <span
- data-x="concept-input-min">minimum</span>, in which case the <span
- data-x="concept-input-value-default-range">default value</span> is the <span
- data-x="concept-input-min">minimum</span>.</p>
-
- <div class="impl">
-
- <p>When the element is <span>suffering from an underflow</span>, the user agent must set the
- element's <span data-x="concept-fe-value">value</span> to a <span>valid floating-point
- number</span> that represents the <span data-x="concept-input-min">minimum</span>.</p>
-
- <p>When the element is <span>suffering from an overflow</span>, if the <span
- data-x="concept-input-max">maximum</span> is not less than the <span
- data-x="concept-input-min">minimum</span>, the user agent must set the element's <span
- data-x="concept-fe-value">value</span> to a <span>valid floating-point number</span> that
- represents the <span data-x="concept-input-max">maximum</span>.</p>
-
- </div>
-
<p><span class="impl">The <span data-x="concept-input-step-scale">step scale factor</span> is
1.</span> The <span data-x="concept-input-step-default">default step</span> is 1 (allowing only
integers, unless the <code data-x="attr-input-min">min</code> attribute has a non-integer
@@ -45723,25 +45962,12 @@
<div class="impl">
- <p>When the element is <span>suffering from a step mismatch</span>, the user agent must round the
- element's <span data-x="concept-fe-value">value</span> to the nearest number for which the element
- would not <span data-x="suffering from a step mismatch">suffer from a step mismatch</span>, and
- which is greater than or equal to the <span data-x="concept-input-min">minimum</span>, and, if the
- <span data-x="concept-input-max">maximum</span> is not less than the <span
- data-x="concept-input-min">minimum</span>, which is less than or equal to the <span
- data-x="concept-input-max">maximum</span>, if there is a number that matches these constraints. If
- two numbers match these constraints, then user agents must use the one nearest to positive
- infinity.</p>
-
- <p class="example">For example, the markup
- <code><input type="range" min=0 max=100 step=20 value=50></code>
- results in a range control whose initial value is 60.</p>
-
<p><strong>The <span data-x="concept-input-value-string-number">algorithm to convert a string to a
number</span>, given a string <var data-x="">input</var>, is as follows</strong>: If applying the
<span>rules for parsing floating-point number values</span> to <var data-x="">input</var> results
in an error, then return an error; otherwise, return the resulting number.</p>
+<!-- XXXX -->
<p><strong>The <span data-x="concept-input-value-number-string">algorithm to convert a number to a
string</span>, given a number <var data-x="">input</var>, is as follows</strong>: Return a
<span>valid floating-point number</span> that represents <var data-x="">input</var>.</p>
@@ -45755,7 +45981,8 @@
<code data-x="attr-fe-autocomplete">autocomplete</code>,
<code data-x="attr-input-list">list</code>,
<code data-x="attr-input-max">max</code>,
- <code data-x="attr-input-min">min</code>, and
+ <code data-x="attr-input-min">min</code>,
+ <code data-x="attr-input-multiple">multiple</code>, and
<code data-x="attr-input-step">step</code> content attributes;
<code data-x="dom-input-list">list</code>,
<code data-x="dom-input-value">value</code>, and
@@ -45763,6 +45990,17 @@
<code data-x="dom-input-stepDown">stepDown()</code> and
<code data-x="dom-input-stepUp">stepUp()</code> methods.</p>
+ <p>The following common <code>input</code> IDL attribute <span
+ data-x="concept-input-apply">applies</span> to the element if the <code class="no-backref"
+ data-x="attr-input-multiple">multiple</code> content attribute is not specified:
+ <code data-x="dom-input-valueAsNumber">valueAsNumber</code>.</p>
+
+ <p>The following common <code>input</code> IDL attributes <span
+ data-x="concept-input-apply">apply</span> to the element if the <code class="no-backref"
+ data-x="attr-input-multiple">multiple</code> content attribute <em>is</em> specified:
+ <code data-x="dom-input-valueLow">valueLow</code> and
+ <code data-x="dom-input-valueHigh">valueHigh</code>.</p>
+
<p>The <code data-x="dom-input-value">value</code> IDL attribute is in mode <span
data-x="dom-input-value-value">value</span>.</p>
@@ -45785,7 +46023,6 @@
<code class="no-backref" data-x="attr-fe-inputmode">inputmode</code>,
<code class="no-backref" data-x="attr-input-maxlength">maxlength</code>,
<code class="no-backref" data-x="attr-input-minlength">minlength</code>,
- <code class="no-backref" data-x="attr-input-multiple">multiple</code>,
<code class="no-backref" data-x="attr-input-pattern">pattern</code>,
<code class="no-backref" data-x="attr-input-placeholder">placeholder</code>,
<code class="no-backref" data-x="attr-input-readonly">readonly</code>,
@@ -45799,14 +46036,29 @@
<code class="no-backref" data-x="dom-input-files">files</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionStart">selectionStart</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>,
- <code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>, and
- <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code> IDL attributes;
+ <code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>,
+ <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-textarea/input-select">select()</code>,
<code class="no-backref" data-x="dom-textarea/input-setRangeText">setRangeText()</code>, and
<code class="no-backref" data-x="dom-textarea/input-setSelectionRange">setSelectionRange()</code> methods.</p>
+ <p>The following common <code>input</code> IDL attributes <span>do not apply</span> to the
+ element if the <code class="no-backref" data-x="attr-input-multiple">multiple</code> content
+ attribute is not specified:
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code> and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code>.</p>
+
+ <p>The following common <code>input</code> IDL attribute <span data-x="do not apply">does not
+ apply</span> to the element if the <code class="no-backref"
+ data-x="attr-input-multiple">multiple</code> content attribute <em>is</em> specified:
+ <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code>.</p>
+
</div>
+ <!--CLEANUP--><!-- move these into the relevant subsection above -->
+
<div class="example">
<p>Here is an example of a range control using an autocomplete list with the <code
@@ -45977,8 +46229,10 @@
<code class="no-backref" data-x="dom-textarea/input-selectionStart">selectionStart</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>,
- <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>, and
- <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code> IDL attributes;
+ <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>,
+ <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-textarea/input-select">select()</code>,
<code class="no-backref" data-x="dom-textarea/input-setRangeText">setRangeText()</code>,
<code class="no-backref" data-x="dom-textarea/input-setSelectionRange">setSelectionRange()</code>,
@@ -46100,8 +46354,10 @@
<code class="no-backref" data-x="dom-textarea/input-selectionStart">selectionStart</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>,
- <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>, and
- <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code> IDL attributes;
+ <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>,
+ <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-textarea/input-select">select()</code>,
<code class="no-backref" data-x="dom-textarea/input-setRangeText">setRangeText()</code>,
<code class="no-backref" data-x="dom-textarea/input-setSelectionRange">setSelectionRange()</code>,
@@ -46247,8 +46503,10 @@
<code class="no-backref" data-x="dom-textarea/input-selectionStart">selectionStart</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>,
- <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>, and
- <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code> IDL attributes;
+ <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>,
+ <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-textarea/input-select">select()</code>,
<code class="no-backref" data-x="dom-textarea/input-setRangeText">setRangeText()</code>,
<code class="no-backref" data-x="dom-textarea/input-setSelectionRange">setSelectionRange()</code>,
@@ -46505,8 +46763,10 @@
<code class="no-backref" data-x="dom-textarea/input-selectionStart">selectionStart</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>,
- <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>, and
- <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code> IDL attributes;
+ <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>,
+ <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-textarea/input-select">select()</code>,
<code class="no-backref" data-x="dom-textarea/input-setRangeText">setRangeText()</code>,
<code class="no-backref" data-x="dom-textarea/input-setSelectionRange">setSelectionRange()</code>,
@@ -46604,8 +46864,10 @@
<code class="no-backref" data-x="dom-textarea/input-selectionStart">selectionStart</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>,
- <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>, and
- <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code> IDL attributes;
+ <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>,
+ <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-textarea/input-select">select()</code>,
<code class="no-backref" data-x="dom-textarea/input-setRangeText">setRangeText()</code>,
<code class="no-backref" data-x="dom-textarea/input-setSelectionRange">setSelectionRange()</code>,
@@ -46859,8 +47121,10 @@
<code class="no-backref" data-x="dom-textarea/input-selectionStart">selectionStart</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>,
- <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>, and
- <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code> IDL attributes;
+ <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>,
+ <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-textarea/input-select">select()</code>,
<code class="no-backref" data-x="dom-textarea/input-setRangeText">setRangeText()</code>,
<code class="no-backref" data-x="dom-textarea/input-setSelectionRange">setSelectionRange()</code>,
@@ -46971,8 +47235,10 @@
<code class="no-backref" data-x="dom-textarea/input-selectionStart">selectionStart</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>,
- <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>, and
- <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code> IDL attributes;
+ <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>,
+ <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-textarea/input-select">select()</code>,
<code class="no-backref" data-x="dom-textarea/input-setRangeText">setRangeText()</code>,
<code class="no-backref" data-x="dom-textarea/input-setSelectionRange">setSelectionRange()</code>,
@@ -47056,8 +47322,10 @@
<code class="no-backref" data-x="dom-textarea/input-selectionStart">selectionStart</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionEnd">selectionEnd</code>,
<code class="no-backref" data-x="dom-textarea/input-selectionDirection">selectionDirection</code>,
- <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>, and
- <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code> IDL attributes;
+ <code class="no-backref" data-x="dom-input-valueAsDate">valueAsDate</code>,
+ <code class="no-backref" data-x="dom-input-valueAsNumber">valueAsNumber</code>,
+ <code class="no-backref" data-x="dom-input-valueLow">valueLow</code>, and
+ <code class="no-backref" data-x="dom-input-valueHigh">valueHigh</code> IDL attributes;
<code class="no-backref" data-x="dom-textarea/input-select">select()</code>,
<code class="no-backref" data-x="dom-textarea/input-setRangeText">setRangeText()</code>,
<code class="no-backref" data-x="dom-textarea/input-setSelectionRange">setSelectionRange()</code>,
@@ -47356,6 +47624,9 @@
<h6>The <code data-x="attr-input-pattern">pattern</code> attribute</h6>
+ <!-- if more text control types start supporting multiple="", this will need to be refactored -->
+
+<!--XXXXX-->
<p>The <dfn data-x="attr-input-pattern"><code>pattern</code></dfn> attribute specifies a regular
expression against which the control's <span data-x="concept-fe-value">value</span>, or, when the
<code data-x="attr-input-multiple">multiple</code> attribute <span
@@ -47385,6 +47656,7 @@
entirety of the element's <span data-x="concept-fe-value">value</span>, then the element is
<span>suffering from a pattern mismatch</span>.</p>
+<!--XXXXX-->
<p><strong>Constraint validation</strong>: If the element's <span
data-x="concept-fe-value">value</span> is not the empty string, and the element's <code
data-x="attr-input-multiple">multiple</code> attribute is specified and <span
@@ -47436,10 +47708,12 @@
<code data-x="attr-input-title">title</code>s as if an error has necessarily occurred.</p>
-
+<!--CLEANUP-->
<h6>The <code data-x="attr-input-min">min</code> and <code
data-x="attr-input-max">max</code> attributes</h6>
+ <!-- if more numeric control types start supporting multiple="", this will need to be refactored -->
+
<p>Some form controls can have explicit constraints applied limiting the allowed range of values
that the user can provide. Normally, such a range would be linear and continuous. A form control
can <dfn data-x="has a periodic domain">have a periodic domain</dfn>, however, in which case the
@@ -47509,30 +47783,70 @@
<div class="impl">
- <p><strong>Constraint validation</strong>: When the element has a <span
- data-x="attr-input-min">minimum</span> and does not <span data-x="has a reversed range">have a
- reversed range</span>, and the result of applying the <span
- data-x="concept-input-value-string-number">algorithm to convert a string to a number</span> to the
- string given by the element's <span data-x="concept-fe-value">value</span> is a number, and the
- number obtained from that algorithm is less than the <span data-x="attr-input-min">minimum</span>,
- the element is <span>suffering from an underflow</span>.</p>
+ <p>How these range limitations apply depends on whether the element has a <code
+ data-x="attr-input-multiple">multiple</code> attribute.</p>
- <p><strong>Constraint validation</strong>: When the element has a <span
- data-x="attr-input-max">maximum</span> and does not <span data-x="has a reversed range">have a
- reversed range</span>, and the result of applying the <span
- data-x="concept-input-value-string-number">algorithm to convert a string to a number</span> to the
- string given by the element's <span data-x="concept-fe-value">value</span> is a number, and the
- number obtained from that algorithm is more than the <span data-x="attr-input-max">maximum</span>,
- the element is <span>suffering from an overflow</span>.</p>
+ <dl class="switch">
- <p><strong>Constraint validation</strong>: When an element <span>has a reversed range</span>, and
- the result of applying the <span data-x="concept-input-value-string-number">algorithm to convert a
- string to a number</span> to the string given by the element's <span
- data-x="concept-fe-value">value</span> is a number, and the number obtained from that algorithm is
- more than the <span data-x="attr-input-max">maximum</span> <em>and</em> less than the <span
- data-x="attr-input-min">minimum</span>, the element is simultaneously <span>suffering from an
- underflow</span> and <span>suffering from an overflow</span>.</p>
+ <dt>If the element does not have a <code data-x="attr-input-multiple">multiple</code> attribute
+ specified or if the <code data-x="attr-input-multiple">multiple</code> attribute <span data-x="do
+ not apply">does not apply</span></dt>
+ <dd><!--CLEANUP--><!--x3-->
+
+ <p><strong>Constraint validation</strong>: When the element has a <span
+ data-x="attr-input-min">minimum</span> and does not <span data-x="has a reversed range">have a
+ reversed range</span>, and the result of applying the <span
+ data-x="concept-input-value-string-number">algorithm to convert a string to a number</span> to the
+ string given by the element's <span data-x="concept-fe-value">value</span> is a number, and the
+ number obtained from that algorithm is less than the <span data-x="attr-input-min">minimum</span>,
+ the element is <span>suffering from an underflow</span>.</p>
+
+ <p><strong>Constraint validation</strong>: When the element has a <span
+ data-x="attr-input-max">maximum</span> and does not <span data-x="has a reversed range">have a
+ reversed range</span>, and the result of applying the <span
+ data-x="concept-input-value-string-number">algorithm to convert a string to a number</span> to the
+ string given by the element's <span data-x="concept-fe-value">value</span> is a number, and the
+ number obtained from that algorithm is more than the <span data-x="attr-input-max">maximum</span>,
+ the element is <span>suffering from an overflow</span>.</p>
+
+ <p><strong>Constraint validation</strong>: When an element <span>has a reversed range</span>, and
+ the result of applying the <span data-x="concept-input-value-string-number">algorithm to convert a
+ string to a number</span> to the string given by the element's <span
+ data-x="concept-fe-value">value</span> is a number, and the number obtained from that algorithm is
+ more than the <span data-x="attr-input-max">maximum</span> <em>and</em> less than the <span
+ data-x="attr-input-min">minimum</span>, the element is simultaneously <span>suffering from an
+ underflow</span> and <span>suffering from an overflow</span>.</p>
+
+ </dd>
+
+ <dt>If the element does have a <code data-x="attr-input-multiple">multiple</code> attribute
+ specified and the <code data-x="attr-input-multiple">multiple</code> attribute does <span
+ data-x="concept-input-apply">apply</span></dt>
+
+ <dd>
+
+ <p><strong>Constraint validation</strong>: When the element has a <span
+ data-x="attr-input-min">minimum</span>, and the result of applying the <span
+ data-x="concept-input-value-string-number">algorithm to convert a string to a number</span> to
+ any of the strings in the element's <span data-x="concept-fe-values">values</span> is a number
+ that is less than the <span data-x="attr-input-min">minimum</span>, the element is
+ <span>suffering from an underflow</span>.</p>
+
+ <p><strong>Constraint validation</strong>: When the element has a <span
+ data-x="attr-input-max">maximum</span>, and the result of applying the <span
+ data-x="concept-input-value-string-number">algorithm to convert a string to a number</span> to
+ any of the strings in the element's <span data-x="concept-fe-values">values</span> is a number
+ that is more than the <span data-x="attr-input-max">maximum</span>, the element is
+ <span>suffering from an overflow</span>.</p>
+
+ <!-- currently multiple="" only applies to type=range, which can't have a reversed range or a
+ periodic domain -->
+
+ </dd>
+
+ </dl>
+
</div>
<div class="example">
@@ -47564,8 +47878,11 @@
<h6>The <code data-x="attr-input-step">step</code> attribute</h6>
+ <!-- if more numeric control types start supporting multiple="", this will need to be refactored -->
+
+<!--CLEANUP-->
<p>The <dfn data-x="attr-input-step"><code>step</code></dfn> attribute indicates the granularity
- that is expected (and required) of the <span data-x="concept-fe-value">value</span>, by limiting
+ that is expected (and required) of the <span data-x="concept-fe-value">value</span> or <span data-x="concept-fe-values">values</span>, by limiting
the allowed values. <span class="impl">The section that defines the <code
data-x="attr-input-type">type</code> attribute's current state also defines the <dfn
data-x="concept-input-step-default">default step</dfn>, the <dfn
@@ -47617,11 +47934,42 @@
string to a number</span> to the value of the <code data-x="attr-input-min">min</code> content
attribute is not an error, then return that result and abort these steps.</p></li>
- <li><p>If the element has a <code data-x="attr-input-value">value</code> content attribute, and
- the result of applying the <span data-x="concept-input-value-string-number">algorithm to convert a
- string to a number</span> to the value of the <code data-x="attr-input-value">value</code> content
- attribute is not an error, then return that result and abort these steps.</p></li>
+ <li>
+<!--CLEANUP-->
+ <p>If the element does not have a <code data-x="attr-input-multiple">multiple</code> attribute
+ specified or if the <code data-x="attr-input-multiple">multiple</code> attribute <span data-x="do not apply">does not
+ apply</span>, then: if the element has a <code data-x="attr-input-value">value</code> content attribute, and
+ the result of applying the <span data-x="concept-input-value-string-number">algorithm to convert a
+ string to a number</span> to the value of the <code data-x="attr-input-value">value</code> content
+ attribute is not an error, then return that result and abort these steps.</p>
+
+ <p>Otherwise, the element's <code data-x="attr-input-type">type</code> attribute is in the <span
+ data-x="attr-input-type-range">Range</span> state and the element has a <code
+ data-x="attr-input-multiple">multiple</code> attribute specified<!--, and the <code
+ data-x="attr-input-multiple">multiple</code> attribute does <span
+ data-x="concept-input-apply">apply</span>-->: run these substeps:</p>
+
+ <ol>
+
+ <li><p>If the element does not have a <code data-x="attr-input-value">value</code> content
+ attribute, skip these substeps.</p></li>
+
+ <li><p><span data-x="split a string on commas">Split on commas</span> the value of the <code
+ data-x="attr-input-value">value</code> content attribute.</p></li>
+
+ <li><p>If the result of the previous step was not exactly two values, both of which are <span
+ data-x="valid floating-point number">valid floating-point numbers</span>, then skip these
+ substeps.</p></li>
+
+<!--XXXX-->
+ <li><p>Return the number represented by the lower of the two values, and abort these
+ steps.</p></li>
+
+ </ol>
+
+ </li>
+
<li><p>If a <span data-x="concept-input-step-default-base">default step base</span> is defined for
this element given its <code data-x="attr-input-type">type</code> attribute's state, then return
it and abort these steps.</p>
@@ -47630,14 +47978,45 @@
</ol>
- <p><strong>Constraint validation</strong>: When the element has an <span
- data-x="concept-input-step">allowed value step</span>, and the result of applying the <span
- data-x="concept-input-value-string-number">algorithm to convert a string to a number</span> to the
- string given by the element's <span data-x="concept-fe-value">value</span> is a number, and that
- number subtracted from the <span data-x="concept-input-min-zero">step base</span> is not an
- integral multiple of the <span data-x="concept-input-step">allowed value step</span>, the element
- is <span>suffering from a step mismatch</span>.</p>
+ <p>How these range limitations apply depends on whether the element has a <code
+ data-x="attr-input-multiple">multiple</code> attribute.</p>
+ <dl class="switch">
+
+ <dt>If the element does not have a <code data-x="attr-input-multiple">multiple</code> attribute
+ specified or if the <code data-x="attr-input-multiple">multiple</code> attribute <span data-x="do
+ not apply">does not apply</span></dt>
+
+ <dd><!--CLEANUP-->
+
+ <p><strong>Constraint validation</strong>: When the element has an <span
+ data-x="concept-input-step">allowed value step</span>, and the result of applying the <span
+ data-x="concept-input-value-string-number">algorithm to convert a string to a number</span> to the
+ string given by the element's <span data-x="concept-fe-value">value</span> is a number, and that
+ number subtracted from the <span data-x="concept-input-min-zero">step base</span> is not an
+ integral multiple of the <span data-x="concept-input-step">allowed value step</span>, the element
+ is <span>suffering from a step mismatch</span>.</p>
+
+ </dd>
+
+ <dt>If the element does have a <code data-x="attr-input-multiple">multiple</code> attribute
+ specified and the <code data-x="attr-input-multiple">multiple</code> attribute does <span
+ data-x="concept-input-apply">apply</span></dt>
+
+ <dd>
+
+ <p><strong>Constraint validation</strong>: When the element has an <span
+ data-x="attr-input-step">allowed value step</span>, and the result of applying the <span
+ data-x="concept-input-value-string-number">algorithm to convert a string to a number</span> to
+ any of the strings in the element's <span data-x="concept-fe-values">values</span> is a number
+ that, when subtracted from the <span data-x="concept-input-min-zero">step base</span>, is not an
+ integral multiple of the <span data-x="concept-input-step">allowed value step</span>, the
+ element is <span>suffering from a step mismatch</span>.</p>
+
+ </dd>
+
+ </dl>
+
</div>
<div class="example">
@@ -47664,6 +48043,8 @@
<h6>The <code data-x="attr-input-list">list</code> attribute</h6>
+ <!-- if we add any more types of controls, the handling of multiple="" below needs refactoring -->
+
<p>The <dfn data-x="attr-input-list"><code>list</code></dfn> attribute is used to identify an
element that lists predefined options suggested to the user.</p>
@@ -47693,8 +48074,8 @@
<dl class="switch">
<dt>If the element does not have a <code data-x="attr-input-multiple">multiple</code> attribute
- specified or if the <code data-x="attr-input-multiple">multiple</code> attribute does <span>not
- apply</span></dt>
+ specified or if the <code data-x="attr-input-multiple">multiple</code> attribute <span data-x="do
+ not apply">does not apply</span></dt>
<dd>
@@ -47704,12 +48085,33 @@
</dd>
- <dt>If the element <em>does</em> have a <code data-x="attr-input-multiple">multiple</code>
- attribute specified, and the <code data-x="attr-input-multiple">multiple</code> attribute does
- <span data-x="concept-input-apply">apply</span></dt>
+ <!-- multiple types where there's a fixed number of values-->
+ <dt>If the element's <code data-x="attr-input-type">type</code> attribute is in the <span
+ data-x="attr-input-type-range">Range</span> state and the element has a <code
+ data-x="attr-input-multiple">multiple</code> attribute specified<!--, and the <code
+ data-x="attr-input-multiple">multiple</code> attribute does <span
+ data-x="concept-input-apply">apply</span>--></dt>
<dd>
+ <p>When the user selects a suggestion, the user agent must identify which value in the element's
+ <span data-x="concept-fe-values">values</span> the user intended to update, and must then update
+ the element's <span data-x="concept-fe-values">values</span> so that the relevant value is
+ changed to the value given by the selected suggestion's <span
+ data-x="concept-option-value">value</span>, as if the user had himself set it to that value.</p>
+
+ </dd>
+
+ <!-- multiple types where there's a potentially growing number of values -->
+ <dt>If the element's <code data-x="attr-input-type">type</code> attribute is in the <span
+ data-x="attr-input-type-email">Email</span> state and the element has a <code
+ data-x="attr-input-multiple">multiple</code> attribute specified<!--, and the <code
+ data-x="attr-input-multiple">multiple</code> attribute does <span
+ data-x="concept-input-apply">apply</span>--></dt>
+
+ <dd>
+
+<!--XXXXX-->
<p>When the user selects a suggestion, the user agent must either add a new entry to the
<code>input</code> element's <span data-x="concept-fe-values">value<em>s</em></span>, whose value
is the selected suggestion's <span data-x="concept-option-value">value</span>, or change an
@@ -47937,6 +48339,21 @@
</dd>
+ <dt><var data-x="">input</var> . <code data-x="dom-input-valueLow">valueLow</code> [ = <var data-x="">value</var> ]</dt>
+ <dt><var data-x="">input</var> . <code data-x="dom-input-valueHigh">valueHigh</code> [ = <var data-x="">value</var> ]</dt>
+
+ <dd>
+
+ <p>Returns a number representing the low and high components of form control's <span
+ data-x="concept-fe-value">value</span> respectively, if applicable; otherwise, returns NaN.</p>
+
+ <p>Can be set, to change the value.</p>
+
+ <p>Throws an <code>InvalidStateError</code> exception if the control is not a two-handle range
+ control.</p>
+
+ </dd>
+
<dt><var data-x="">input</var> . <code data-x="dom-input-stepUp">stepUp</code>( [ <var data-x="">n</var> ] )</dt>
<dt><var data-x="">input</var> . <code data-x="dom-input-stepDown">stepDown</code>( [ <var data-x="">n</var> ] )</dt>
@@ -48053,11 +48470,12 @@
<p>The <dfn data-x="dom-input-valueAsDate"><code>valueAsDate</code></dfn> IDL attribute represents
the <span data-x="concept-fe-value">value</span> of the element, interpreted as a date.</p>
+<!--CLEANUP-->
<p>On getting, if the <code data-x="dom-input-valueAsDate">valueAsDate</code> attribute <span
data-x="do not apply">does not apply</span>, as defined for the <code>input</code> element's <code
data-x="attr-input-type">type</code> attribute's current state, then return null. Otherwise, run
the <span data-x="concept-input-value-string-date">algorithm to convert a string to a
- <code>Date</code> object</span> defined for that state; if the algorithm returned a
+ <code>Date</code> object</span> defined for that state to the element's <span data-x="concept-fe-value">value</span>; if the algorithm returned a
<code>Date</code> object, then return it, otherwise, return null.</p>
<p>On setting, if the <code data-x="dom-input-valueAsDate">valueAsDate</code> attribute <span
@@ -48076,18 +48494,19 @@
represents the <span data-x="concept-fe-value">value</span> of the element, interpreted as a
number.</p>
+<!--CLEANUP-->
<p>On getting, if the <code data-x="dom-input-valueAsNumber">valueAsNumber</code> attribute <span
data-x="do not apply">does not apply</span>, as defined for the <code>input</code> element's <code
data-x="attr-input-type">type</code> attribute's current state, then return a Not-a-Number (NaN)
value. Otherwise, if the <code data-x="dom-input-valueAsDate">valueAs<em>Date</em></code> attribute
<span data-x="concept-input-apply">applies</span>, run the <span
data-x="concept-input-value-string-date">algorithm to convert a string to a <code>Date</code>
- object</span> defined for that state; if the algorithm returned a <code>Date</code> object, then
+ object</span> defined for that state to the element's <span data-x="concept-fe-value">value</span>; if the algorithm returned a <code>Date</code> object, then
return the <i>time value</i> of the object (the number of milliseconds from midnight UTC the
morning of 1970-01-01 to the time represented by the <code>Date</code> object), otherwise, return
a Not-a-Number (NaN) value. Otherwise, run the <span
data-x="concept-input-value-string-number">algorithm to convert a string to a number</span> defined
- for that state; if the algorithm returned a number, then return it, otherwise, return a
+ for that state to the element's <span data-x="concept-fe-value">value</span>; if the algorithm returned a number, then return it, otherwise, return a
Not-a-Number (NaN) value.</p>
<p>On setting, if the new value is infinite, then throw a <code>TypeError</code> exception.
@@ -48108,6 +48527,65 @@
<hr>
+ <p>The <dfn data-x="dom-input-valueLow"><code>valueLow</code></dfn> and <dfn
+ data-x="dom-input-valueHigh"><code>valueHigh</code></dfn> IDL attributes represent the <span
+ data-x="concept-fe-value">value</span> of the element, interpreted as a comma-separated pair of
+ numbers.</p>
+
+ <p>On getting, if the attributes <span>do not apply</span>, as defined for the <code>input</code>
+ element's <code data-x="attr-input-type">type</code> attribute's current state, then return zero;
+ otherwise, run the following steps:</p>
+
+ <ol>
+
+ <li><p>Let <var data-x="">values</var> be the <span data-x="concept-fe-values">values</span> of
+ the element, interpreted according to the <span
+ data-x="concept-input-value-string-number">algorithm to convert a string to a number</span>, as
+ defined by the <code>input</code> element's <code data-x="attr-input-type">type</code>
+ attribute's current state.</p></li>
+
+ <li><p>If the attribute in question is <code data-x="dom-input-valueLow">valueLow</code>, return
+ the lowest of the values in <var data-x="">values</var>; otherwise, return the highest of the
+ values in <var data-x="">values</var>.</p></li>
+
+ </ol>
+
+ <p>On setting, if the attributes <span>do not apply</span>, as defined for the <code>input</code>
+ element's <code data-x="attr-input-type">type</code> attribute's current state, then throw an
+ <code>InvalidStateError</code> exception. Otherwise, run the following steps:</p>
+
+ <ol>
+
+ <li><p>Let <var data-x="">values</var> be the <span data-x="concept-fe-values">values</span> of
+ the element, interpreted according to the <span
+ data-x="concept-input-value-string-number">algorithm to convert a string to a number</span>, as
+ defined by the <code>input</code> element's <code data-x="attr-input-type">type</code>
+ attribute's current state.</p></li>
+
+ <li><p>Let <var data-x="">new value</var> be the result of running the <span
+ data-x="concept-input-value-number-string">algorithm to convert a number to a string</span>, as
+ defined for that state, on the new value.</p></li>
+
+ <li><p>If the attribute in question is <code data-x="dom-input-valueLow">valueLow</code>, replace
+ the lower value in <var data-x="">values</var> with <var data-x="">new value</var>; otherwise,
+ replace the higher value in <var data-x="">values</var> with <var data-x="">new
+ value</var>.</p></li>
+
+ <li><p>Sort <var data-x="">values</var> in increasing numeric order.</p></li>
+
+ <li><p>Let <span data-x="concept-fe-values">values</span> be the result of running the <span
+ data-x="concept-input-value-number-string">algorithm to convert a number to a string</span>, as
+ defined by the <code>input</code> element's <code data-x="attr-input-type">type</code>
+ attribute's current state, to the values in <var data-x="">values</var>.</p></li>
+
+ <li><p>Set the element's <span data-x="concept-fe-value">value</span> to the concatenation of the
+ strings in in <span data-x="concept-fe-values">values</span>, separating each value from the next
+ by a U+002C COMMA character (,).</p></li>
+
+ </ol>
+
+ <hr>
+
<p>The <dfn data-x="dom-input-stepDown"><code>stepDown(<var data-x="">n</var>)</code></dfn> and <dfn
data-x="dom-input-stepUp"><code>stepUp(<var data-x="">n</var>)</code></dfn> methods, when invoked,
must run the following algorithm:</p>
@@ -53155,10 +53633,15 @@
<dd>The element's <span data-x="concept-fe-values">values</span>.</dd>
+<!--
+ <dt>An <code>input</code> element with its <code data-x="attr-input-type">type</code> attribute
+ in the <span data-x="attr-input-type-range">Range</span> state and with the <code
+ data-x="attr-input-multiple">multiple</code> attribute specified</dt>
+-->
<dt>Any other <code>input</code> element</dt>
<dt>A <code>textarea</code> element</dt>
- <dd>The element's <span data-x="concept-fe-values">value</span>.</dd>
+ <dd>The element's <span data-x="concept-fe-value">value</span>.</dd>
<dt>A <code>select</code> element with its <code data-x="attr-select-multiple">multiple</code>
attribute specified</dt>
@@ -111449,12 +111932,12 @@
<p class="tablenote"><small>An asterisk (*) in a cell indicates that the actual rules are more
complicated than indicated in the table above.</small></p>
- <p>† Categories in the "Parents" column refer to parents that list the given categories in
- their content model, not to elements that themselves are in those categories. For example, the
- <code>a</code> element's "Parents" column says "phrasing", so any element whose content model
- contains the "phrasing" category could be a parent of an <code>a</code> element. Since the "flow"
- category includes all the "phrasing" elements, that means the <code>th</code> element could be a
- parent to an <code>a</code> element.</p>
+ <p class="tablenote"><small>† Categories in the "Parents" column refer to parents that list
+ the given categories in their content model, not to elements that themselves are in those
+ categories. For example, the <code>a</code> element's "Parents" column says "phrasing", so any
+ element whose content model contains the "phrasing" category could be a parent of an
+ <code>a</code> element. Since the "flow" category includes all the "phrasing" elements, that means
+ the <code>th</code> element could be a parent to an <code>a</code> element.</small></p>
More information about the Commit-Watchers
mailing list