[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