Short URL: http://html5.org/r/2252
| SVN | Bug | Comment | Time (UTC) |
|---|---|---|---|
| 2252 | WF2: type=date, type=month, type=week | 2008-09-30 10:56 |
Index: source =================================================================== --- source (revision 2251) +++ source (revision 2252) @@ -26726,10 +26726,124 @@ title="attr-input-type-date">Date</span> state, the rules in this section apply.</p> - <p class="big-issue">...</p> + <p>The <code>input</code> element represents a control for setting + the element's <span title="concept-fe-value">value</span> to a + string representing a specific <span + title="concept-date">date</span>.</p> + <p>If the element is <i title="concept-input-mutable">mutable</i>, + the user should allow the user to change the <span + title="concept-date">date</span> represented by its <span + title="concept-fe-value">value</span>, as obtained by <span + title="parse a date string">parsing a date</span> from it. User + agents must not allow the user to set the <span + title="concept-fe-value">value</span> to a string that is not a + <span>valid date string</span>. If the user agent provides a user + interface for selecting a <span title="concept-date">date</span>, + then the <span title="concept-fe-value">value</span> must be set to + a <span>valid date string</span> representing the user's + selection. User agents should allow the user to set the <span + title="concept-fe-value">value</span> to the empty string.</p> + <p><strong>The <span>value sanitization algorithm</span> is as + follows:</strong> If the <span title="concept-fe-value">value</span> + of the element is not a <span>valid date string</span>, then set it + to the empty string instead.</p> + <p>The <code title="attr-input-min">min</code> attribute, if + specified, must have a value that is a <span>valid date + string</span>. The <code title="attr-input-max">max</code> + attribute, if specified, must have a value that is a <span>valid + date string</span>.</p> + + <p>The <code title="attr-input-step">step</code> attribute is + expressed in days. The <span title="concept-input-step-scale">step + scale factor</span> is 86,400,000 (which converts the days to + milliseconds, as used in the other algorithms). The <span + title="concept-input-step-default">default step</span> is 1 day.</p> + + <p>When the element is <span>suffering from a step mismatch</span>, + the user agent may round the element's <span + title="concept-input-value">value</span> to the nearest <span + title="concept-date">date</span> for which the element would not + <span title="suffering from a step mismatch">suffer from a step + mismatch</span>.</p> + + <p><strong>The <span + title="concept-input-value-string-number">algorithm to convert a + string to a number</span>, given a string <var title="">input</var>, + is as follows:</strong> If <span title="parse a date string">parsing + a date</span> from <var title="">input</var> results in an error, + then return an error; otherwise, return the number of milliseconds + elapsed from midnight UTC on the morning of 1970-01-01 (the time + represented by the value "<code + title="">1970-01-01T00:00:00.0Z</code>") to midnight UTC on the + morning of the parsed <span title="concept-date">date</span>, + ignoring leap seconds.</p> + + <p><strong>The <span + title="concept-input-value-number-string">algorithm to convert a + number to a string</span>, given a number <var title="">input</var>, + is as follows:</strong> Return a <span>valid date string</span> that + represents the <span title="concept-date">date</span> that, in UTC, + is current <var title="">input</var> milliseconds after midnight UTC + on the morning of 1970-01-01 (the time represented by the value + "<code title="">1970-01-01T00:00:00.0Z</code>").</p> + + <p><strong>The <span + title="concept-input-value-string-date">algorithm to convert a + string to a <code>Date</code> object</span>, given a string <var + title="">input</var>, is as follows:</strong> If <span title="parse + a date string">parsing a date</span> from <var title="">input</var> + results in an error, then return an error; otherwise, return a + <code>Date</code> object representing midnight UTC on the morning of + the parsed <span title="concept-date">date</span>.</p> + + <p><strong>The <span + title="concept-input-value-date-string">algorithm to convert a + <code>Date</code> object to a string</span>, given a + <code>Date</code> object <var title="">input</var>, is as + follows:</strong> Return a <span>valid date string</span> that + represents the <span title="concept-date">date</span> current at the + time represented by <var title="">input</var> in the UTC + timezone.</p> + + <p>The following common <code>input</code> element content + attributes, DOM attributes, and methods apply to the element: + <code title="attr-input-autocomplete">autocomplete</code>, + <code title="attr-input-list">list</code>, + <code title="attr-input-max">max</code>, + <code title="attr-input-min">min</code>, + <code title="attr-input-readonly">readonly</code>, + <code title="attr-input-required">required</code>, and + <code title="attr-input-step">step</code> content attributes; + <code title="dom-input-list">list</code>, + <code title="dom-input-valueAsDate">valueAsDate</code>, + <code title="dom-input-valueAsNumber">valueAsNumber</code>, + <code title="dom-input-selectedOption">selectedOption</code>, + <code title="dom-input-stepUp">stepUp()</code>, and + <code title="dom-input-stepDown">stepDown()</code> DOM attributes.</p> + + <p>The following content attributes must not be specified and do not + apply to the element: + <code class="no-backref" title="attr-input-accept">accept</code>, + <code class="no-backref" title="attr-input-alt">alt</code>, + <code class="no-backref" title="attr-input-checked">checked</code>, + <code class="no-backref" title="attr-input-maxlength">maxlength</code>, + <code class="no-backref" title="attr-input-pattern">pattern</code>, + <code class="no-backref" title="attr-input-size">size</code>, + <code class="no-backref" title="attr-input-src">src</code>, + <code class="no-backref" title="attr-fs-target">target</code>, + <code class="no-backref" title="attr-fs-method">method</code>, + <code class="no-backref" title="attr-fs-enctype">enctype</code>, and + <code class="no-backref" title="attr-fs-action">action</code>.</p> + + <p>The + <code class="no-backref" title="dom-input-checked">checked</code> + DOM attribute does not apply to the element.</p> + + + <h6><dfn title="attr-input-type-month">Month</dfn> state</h6> <p>When an <code>input</code> element's <code @@ -26737,10 +26851,126 @@ title="attr-input-type-month">Month</span> state, the rules in this section apply.</p> - <p class="big-issue">...</p> + <p>The <code>input</code> element represents a control for setting + the element's <span title="concept-fe-value">value</span> to a + string representing a specific <span + title="concept-month">month</span>.</p> + <p>If the element is <i title="concept-input-mutable">mutable</i>, + the user should allow the user to change the <span + title="concept-month">month</span> represented by its <span + title="concept-fe-value">value</span>, as obtained by <span + title="parse a month string">parsing a month</span> from it. User + agents must not allow the user to set the <span + title="concept-fe-value">value</span> to a string that is not a + <span>valid month string</span>. If the user agent provides a user + interface for selecting a <span title="concept-month">month</span>, + then the <span title="concept-fe-value">value</span> must be set to + a <span>valid month string</span> representing the user's + selection. User agents should allow the user to set the <span + title="concept-fe-value">value</span> to the empty string.</p> + <p><strong>The <span>value sanitization algorithm</span> is as + follows:</strong> If the <span title="concept-fe-value">value</span> + of the element is not a <span>valid month string</span>, then set it + to the empty string instead.</p> + <p>The <code title="attr-input-min">min</code> attribute, if + specified, must have a value that is a <span>valid month + string</span>. The <code title="attr-input-max">max</code> + attribute, if specified, must have a value that is a <span>valid + month string</span>.</p> + + <p>The <code title="attr-input-step">step</code> attribute is + expressed in months. The <span title="concept-input-step-scale">step + scale factor</span> is 1 (there is no conversion needed as the + algorithms use months). The <span + title="concept-input-step-default">default step</span> is 1 + month.</p> + + <p>When the element is <span>suffering from a step mismatch</span>, + the user agent may round the element's <span + title="concept-input-value">value</span> to the nearest <span + title="concept-month">month</span> for which the element would not + <span title="suffering from a step mismatch">suffer from a step + mismatch</span>.</p> + + <p><strong>The <span + title="concept-input-value-string-number">algorithm to convert a + string to a number</span>, given a string <var title="">input</var>, + is as follows:</strong> If <span title="parse a month + string">parsing a month time</span> from <var title="">input</var> + results in an error, then return an error; otherwise, return the + number of months between January 1970 and the parsed <span + title="concept-month">month</span>.</p> + + <p><strong>The <span + title="concept-input-value-number-string">algorithm to convert a + number to a string</span>, given a number <var title="">input</var>, + is as follows:</strong> Return a <span>valid month string</span> + that represents the <span title="concept-monthtime">month</span> + that has <var title="">input</var> months between it and January + 1970.</p> + + <!-- note - it doesn't matter exactly how many months are "between" + two months, so long as the UA implements this consistently. The + number is never actually exposed. --> + + <p><strong>The <span + title="concept-input-value-string-date">algorithm to convert a + string to a <code>Date</code> object</span>, given a string <var + title="">input</var>, is as follows:</strong> If <span title="parse + a month string">parsing a month</span> from <var + title="">input</var> results in an error, then return an error; + otherwise, return a <code>Date</code> object representing midnight + UTC on the morning of the first day of the parsed <span + title="concept-month">month</span>.</p> + + <p><strong>The <span + title="concept-input-value-date-string">algorithm to convert a + <code>Date</code> object to a string</span>, given a + <code>Date</code> object <var title="">input</var>, is as + follows:</strong> Return a <span>valid month string</span> that + represents the <span title="concept-month">month</span> current at + the time represented by <var title="">input</var> in the UTC + timezone.</p> + + <p>The following common <code>input</code> element content + attributes, DOM attributes, and methods apply to the element: + <code title="attr-input-autocomplete">autocomplete</code>, + <code title="attr-input-list">list</code>, + <code title="attr-input-max">max</code>, + <code title="attr-input-min">min</code>, + <code title="attr-input-readonly">readonly</code>, + <code title="attr-input-required">required</code>, and + <code title="attr-input-step">step</code> content attributes; + <code title="dom-input-list">list</code>, + <code title="dom-input-valueAsDate">valueAsDate</code>, + <code title="dom-input-valueAsNumber">valueAsNumber</code>, + <code title="dom-input-selectedOption">selectedOption</code>, + <code title="dom-input-stepUp">stepUp()</code>, and + <code title="dom-input-stepDown">stepDown()</code> DOM attributes.</p> + + <p>The following content attributes must not be specified and do not + apply to the element: + <code class="no-backref" title="attr-input-accept">accept</code>, + <code class="no-backref" title="attr-input-alt">alt</code>, + <code class="no-backref" title="attr-input-checked">checked</code>, + <code class="no-backref" title="attr-input-maxlength">maxlength</code>, + <code class="no-backref" title="attr-input-pattern">pattern</code>, + <code class="no-backref" title="attr-input-size">size</code>, + <code class="no-backref" title="attr-input-src">src</code>, + <code class="no-backref" title="attr-fs-target">target</code>, + <code class="no-backref" title="attr-fs-method">method</code>, + <code class="no-backref" title="attr-fs-enctype">enctype</code>, and + <code class="no-backref" title="attr-fs-action">action</code>.</p> + + <p>The + <code class="no-backref" title="dom-input-checked">checked</code> + DOM attribute does not apply to the element.</p> + + + <h6><dfn title="attr-input-type-week">Week</dfn> state</h6> <p>When an <code>input</code> element's <code @@ -26748,10 +26978,125 @@ title="attr-input-type-week">Week</span> state, the rules in this section apply.</p> - <p class="big-issue">...</p> + <p>The <code>input</code> element represents a control for setting + the element's <span title="concept-fe-value">value</span> to a + string representing a specific <span + title="concept-week">week</span>.</p> + <p>If the element is <i title="concept-input-mutable">mutable</i>, + the user should allow the user to change the <span + title="concept-week">week</span> represented by its <span + title="concept-fe-value">value</span>, as obtained by <span + title="parse a week string">parsing a week</span> from it. User + agents must not allow the user to set the <span + title="concept-fe-value">value</span> to a string that is not a + <span>valid week string</span>. If the user agent provides a user + interface for selecting a <span title="concept-week">week</span>, + then the <span title="concept-fe-value">value</span> must be set to + a <span>valid week string</span> representing the user's + selection. User agents should allow the user to set the <span + title="concept-fe-value">value</span> to the empty string.</p> + <p><strong>The <span>value sanitization algorithm</span> is as + follows:</strong> If the <span title="concept-fe-value">value</span> + of the element is not a <span>valid week string</span>, then set it + to the empty string instead.</p> + <p>The <code title="attr-input-min">min</code> attribute, if + specified, must have a value that is a <span>valid week + string</span>. The <code title="attr-input-max">max</code> + attribute, if specified, must have a value that is a <span>valid + week string</span>.</p> + + <p>The <code title="attr-input-step">step</code> attribute is + expressed in weeks. The <span title="concept-input-step-scale">step + scale factor</span> is 604,800,000 (which converts the weeks to + milliseconds, as used in the other algorithms). The <span + title="concept-input-step-default">default step</span> is 1 + week.</p> + + <p>When the element is <span>suffering from a step mismatch</span>, + the user agent may round the element's <span + title="concept-input-value">value</span> to the nearest <span + title="concept-week">week</span> for which the element would not + <span title="suffering from a step mismatch">suffer from a step + mismatch</span>.</p> + + <p><strong>The <span + title="concept-input-value-string-number">algorithm to convert a + string to a number</span>, given a string <var title="">input</var>, + is as follows:</strong> If <span title="parse a week string">parsing + a week string</span> from <var title="">input</var> results in an + error, then return an error; otherwise, return the number of + milliseconds elapsed from midnight UTC on the morning of 1970-01-01 + (the time represented by the value "<code + title="">1970-01-01T00:00:00.0Z</code>") to midnight UTC on the + morning of the Monday of the parsed <span + title="concept-week">week</span>, ignoring leap seconds.</p> + + <p><strong>The <span + title="concept-input-value-number-string">algorithm to convert a + number to a string</span>, given a number <var title="">input</var>, + is as follows:</strong> Return a <span>valid week string</span> that + represents the <span title="concept-week">week</span> that, in UTC, + is current <var title="">input</var> milliseconds after midnight UTC + on the morning of 1970-01-01 (the time represented by the value + "<code title="">1970-01-01T00:00:00.0Z</code>").</p> + + <p><strong>The <span + title="concept-input-value-string-date">algorithm to convert a + string to a <code>Date</code> object</span>, given a string <var + title="">input</var>, is as follows:</strong> If <span title="parse + a week string">parsing a week</span> from <var title="">input</var> + results in an error, then return an error; otherwise, return a + <code>Date</code> object representing midnight UTC on the morning of + the Monday of the parsed <span title="concept-week">week</span>.</p> + + <p><strong>The <span + title="concept-input-value-date-string">algorithm to convert a + <code>Date</code> object to a string</span>, given a + <code>Date</code> object <var title="">input</var>, is as + follows:</strong> Return a <span>valid week string</span> that + represents the <span title="concept-week">week</span> current at the + time represented by <var title="">input</var> in the UTC + timezone.</p> + + <p>The following common <code>input</code> element content + attributes, DOM attributes, and methods apply to the element: + <code title="attr-input-autocomplete">autocomplete</code>, + <code title="attr-input-list">list</code>, + <code title="attr-input-max">max</code>, + <code title="attr-input-min">min</code>, + <code title="attr-input-readonly">readonly</code>, + <code title="attr-input-required">required</code>, and + <code title="attr-input-step">step</code> content attributes; + <code title="dom-input-list">list</code>, + <code title="dom-input-valueAsDate">valueAsDate</code>, + <code title="dom-input-valueAsNumber">valueAsNumber</code>, + <code title="dom-input-selectedOption">selectedOption</code>, + <code title="dom-input-stepUp">stepUp()</code>, and + <code title="dom-input-stepDown">stepDown()</code> DOM attributes.</p> + + <p>The following content attributes must not be specified and do not + apply to the element: + <code class="no-backref" title="attr-input-accept">accept</code>, + <code class="no-backref" title="attr-input-alt">alt</code>, + <code class="no-backref" title="attr-input-checked">checked</code>, + <code class="no-backref" title="attr-input-maxlength">maxlength</code>, + <code class="no-backref" title="attr-input-pattern">pattern</code>, + <code class="no-backref" title="attr-input-size">size</code>, + <code class="no-backref" title="attr-input-src">src</code>, + <code class="no-backref" title="attr-fs-target">target</code>, + <code class="no-backref" title="attr-fs-method">method</code>, + <code class="no-backref" title="attr-fs-enctype">enctype</code>, and + <code class="no-backref" title="attr-fs-action">action</code>.</p> + + <p>The + <code class="no-backref" title="dom-input-checked">checked</code> + DOM attribute does not apply to the element.</p> + + + <h6><dfn title="attr-input-type-time">Time</dfn> state</h6> <p>When an <code>input</code> element's <code @@ -27255,6 +27600,9 @@ <h6>The <code title="attr-input-step">step</code> attribute</h6> + <!-- XXX this is defined to be a floating point number, which is a + little odd for type=date, type=month, and type=week --> + <p>The <dfn title="attr-input-step"><code>step</code></dfn> attribute indicates the granularity that is expected (and required) of the <span title="concept-fe-value">value</span>, by limiting @@ -27379,6 +27727,10 @@ <hr> + <!-- XXX should simplify this stuff. The only reason we defer to the + Date stuff here is type=month; can we make things simpler somehow? + --> + <p>The <dfn title="dom-input-valueAsNumber"><code>valueAsNumber</code></dfn> DOM attribute represents the <span title="concept-fe-value">value</span> @@ -27388,7 +27740,16 @@ title="dom-input-valueAsNumber">valueAsNumber</code> attribute does not apply, as defined for the <code>input</code> element's <code title="attr-input-type">type</code> attribute's current state, then - return a Not-a-Number (NaN) value. Otherwise, run the <span + return a Not-a-Number (NaN) value. Otherwise, if the <code + title="dom-input-valueAsNumber">valueAs<em>Date</em></code> + attribute applies, run the <span + title="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 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 title="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 Not-a-Number @@ -27398,12 +27759,19 @@ title="dom-input-valueAsNumber">valueAsNumber</code> attribute does not apply, as defined for the <code>input</code> element's <code title="attr-input-type">type</code> attribute's current state, then - throw an <code>INVALID_ACCESS_ERR</code> exception; otherwise, run - the <span title="concept-input-value-number-string">algorithm to - convert a number to a string</span>, as defined for that state, on - the new value, and set the <span - title="concept-fe-value">value</span> of the element to resulting - string.</p> + throw an <code>INVALID_ACCESS_ERR</code> exception. Otherwise, if + the <code + title="dom-input-valueAsNumber">valueAs<em>Date</em></code> + attribute applies, run the <span + title="concept-input-value-date-string">algorithm to convert a + <code>Date</code> object to a string</span> defined for that state, + passing it a <code>Date</code> object whose <i>time value</i> is the + new value, and set the <span title="concept-fe-value">value</span> + of the element to resulting string. Otherwise, run the <span + title="concept-input-value-number-string">algorithm to convert a + number to a string</span>, as defined for that state, on the new + value, and set the <span title="concept-fe-value">value</span> of + the element to resulting string.</p> <hr>