[html5] r5928 - [acgiow] (0) Drop forminput and formchange events, and their associated machiner [...]

whatwg at whatwg.org whatwg at whatwg.org
Thu Mar 3 15:22:16 PST 2011


Author: ianh
Date: 2011-03-03 15:22:14 -0800 (Thu, 03 Mar 2011)
New Revision: 5928

Modified:
   complete.html
   index
   source
Log:
[acgiow] (0) Drop forminput and formchange events, and their associated machinery, since you can now put oninput and onchange everywhere which makes them far less compelling.
Fixing http://www.w3.org/Bugs/Public/show_bug.cgi?id=11129

Modified: complete.html
===================================================================
--- complete.html	2011-03-03 23:04:57 UTC (rev 5927)
+++ complete.html	2011-03-03 23:22:14 UTC (rev 5928)
@@ -747,8 +747,7 @@
        <li><a href=#url-encoded-form-data><span class=secno>4.10.22.4 </span>URL-encoded form data</a></li>
        <li><a href=#multipart-form-data><span class=secno>4.10.22.5 </span>Multipart form data</a></li>
        <li><a href=#plain-text-form-data><span class=secno>4.10.22.6 </span>Plain text form data</a></ol></li>
-     <li><a href=#resetting-a-form><span class=secno>4.10.23 </span>Resetting a form</a></li>
-     <li><a href=#event-dispatch><span class=secno>4.10.24 </span>Event dispatch</a></ol></li>
+     <li><a href=#resetting-a-form><span class=secno>4.10.23 </span>Resetting a form</a></ol></li>
    <li><a href=#interactive-elements><span class=secno>4.11 </span>Interactive elements</a>
     <ol>
      <li><a href=#the-details-element><span class=secno>4.11.1 </span>The <code>details</code> element</a></li>
@@ -8364,8 +8363,6 @@
            attribute <a href=#function>Function</a> <a href=#handler-onended title=handler-onended>onended</a>;
            attribute <a href=#function>Function</a> <a href=#handler-onerror title=handler-onerror>onerror</a>;
            attribute <a href=#function>Function</a> <a href=#handler-onfocus title=handler-onfocus>onfocus</a>;
-           attribute <a href=#function>Function</a> <a href=#handler-onformchange title=handler-onformchange>onformchange</a>;
-           attribute <a href=#function>Function</a> <a href=#handler-onforminput title=handler-onforminput>onforminput</a>;
            attribute <a href=#function>Function</a> <a href=#handler-oninput title=handler-oninput>oninput</a>;
            attribute <a href=#function>Function</a> <a href=#handler-oninvalid title=handler-oninvalid>oninvalid</a>;
            attribute <a href=#function>Function</a> <a href=#handler-onkeydown title=handler-onkeydown>onkeydown</a>;
@@ -9546,8 +9543,6 @@
            attribute <a href=#function>Function</a> <a href=#handler-onended title=handler-onended>onended</a>;
            attribute <a href=#function>Function</a> <a href=#handler-onerror title=handler-onerror>onerror</a>;
            attribute <a href=#function>Function</a> <a href=#handler-onfocus title=handler-onfocus>onfocus</a>;
-           attribute <a href=#function>Function</a> <a href=#handler-onformchange title=handler-onformchange>onformchange</a>;
-           attribute <a href=#function>Function</a> <a href=#handler-onforminput title=handler-onforminput>onforminput</a>;
            attribute <a href=#function>Function</a> <a href=#handler-oninput title=handler-oninput>oninput</a>;
            attribute <a href=#function>Function</a> <a href=#handler-oninvalid title=handler-oninvalid>oninvalid</a>;
            attribute <a href=#function>Function</a> <a href=#handler-onkeydown title=handler-onkeydown>onkeydown</a>;
@@ -9654,8 +9649,6 @@
    <li><code title=handler-onended><a href=#handler-onended>onended</a></code></li>
    <li><code title=handler-onerror><a href=#handler-onerror>onerror</a></code>*</li>
    <li><code title=handler-onfocus><a href=#handler-onfocus>onfocus</a></code>*</li>
-   <li><code title=handler-onformchange><a href=#handler-onformchange>onformchange</a></code></li>
-   <li><code title=handler-onforminput><a href=#handler-onforminput>onforminput</a></code></li>
    <li><code title=handler-oninput><a href=#handler-oninput>oninput</a></code></li>
    <li><code title=handler-oninvalid><a href=#handler-oninvalid>oninvalid</a></code></li>
    <li><code title=handler-onkeydown><a href=#handler-onkeydown>onkeydown</a></code></li>
@@ -15657,16 +15650,16 @@
   <legend>Work out the price of your car</legend>
   <p>Base cost: £52000.</p>
   <p>Select additional options:</p>
-  <ul>
+  <ul onchange="calculate(form)">
    <li><label><input type=checkbox name=brakes> Ceramic brakes (£1000)</label></li>
    <li><label><input type=checkbox name=radio> Satellite radio (£2500)</label></li>
    <li><label><input type=checkbox name=turbo> Turbo charger (£5000)</label></li>
    <li><label><input type=checkbox name=sticker> "XZ" sticker (£250)</label></li>
   </ul>
-  <p>Total: £<output name=result onformchange="calculate(form)"></output></p>
+  <p>Total: £<output name=result></output></p>
  </fieldset>
  <script>
-  document.forms.pricecalc.dispatchFormChange();
+  calculate(document.forms.pricecalc);
  </script>
 </form></pre>
 
@@ -38904,9 +38897,6 @@
   void <a href=#dom-form-submit title=dom-form-submit>submit</a>();
   void <a href=#dom-form-reset title=dom-form-reset>reset</a>();
   boolean <a href=#dom-form-checkvalidity title=dom-form-checkValidity>checkValidity</a>();
-
-  void <a href=#dom-form-dispatchforminput title=dom-form-dispatchFormInput>dispatchFormInput</a>();
-  void <a href=#dom-form-dispatchformchange title=dom-form-dispatchFormChange>dispatchFormChange</a>();
 };</pre>
    </dd>
   </dl><p>The <code><a href=#the-form-element>form</a></code> element <a href=#represents>represents</a> a
@@ -39019,22 +39009,6 @@
 
    </dd>
 
-   <dt><var title="">form</var> . <code title=dom-form-dispatchFormInput><a href=#dom-form-dispatchforminput>dispatchFormInput</a></code>()</dt>
-
-   <dd>
-
-    <p>Dispatches a <code title=event-forminput>forminput</code> event at all the form controls.</p>
-
-   </dd>
-
-   <dt><var title="">form</var> . <code title=dom-form-dispatchFormChange><a href=#dom-form-dispatchformchange>dispatchFormChange</a></code>()</dt>
-
-   <dd>
-
-    <p>Dispatches a <code title=event-formchange>formchange</code> event at all the form controls.</p>
-
-   </dd>
-
   </dl><div class=impl>
 
   <p>The <dfn id=dom-form-autocomplete title=dom-form-autocomplete><code>autocomplete</code></dfn> IDL
@@ -39157,14 +39131,6 @@
   if the constraint validation return a <i>positive</i> result, and
   false if it returned a <i>negative</i> result.</p>
 
-  <p>If the <dfn id=dom-form-dispatchforminput title=dom-form-dispatchFormInput><code>dispatchFormInput()</code></dfn>
-  method is invoked, the user agent must <a href=#broadcast-forminput-events>broadcast <code title=event-forminput>forminput</code> events</a> from the
-  <code><a href=#the-form-element>form</a></code> element.</p>
-
-  <p>If the <dfn id=dom-form-dispatchformchange title=dom-form-dispatchFormChange><code>dispatchFormChange()</code></dfn>
-  method is invoked, the user agent must <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code> events</a> from the
-  <code><a href=#the-form-element>form</a></code> element.</p>
-
   </div>
 
   <div class=example>
@@ -41025,11 +40991,9 @@
    selected a left-to-right writing direction, and "<code title=attr-dir-rtl><a href=#attr-dir-rtl>rtl</a></code>" if the user selected a
    right-to-left writing direction.</li>
 
-   <li><p><a href=#queue-a-task>Queue a task</a> to first <a href=#fire-a-simple-event>fire a simple
-   event</a> that bubbles named <code title=event-input>input</code> at the <code><a href=#the-input-element>input</a></code> element,
-   and to then <a href=#broadcast-forminput-events>broadcast <code title=event-forminput>forminput</code> events</a> from the
-   <code><a href=#the-input-element>input</a></code> element's <a href=#form-owner>form owner</a>, if
-   any.</li>
+   <li><p><a href=#queue-a-task>Queue a task</a> to <a href=#fire-a-simple-event>fire a simple
+   event</a> that bubbles named <code title=event-input>input</code> at the <code><a href=#the-input-element>input</a></code>
+   element.</li>
 
   </ol></div>
 
@@ -43116,10 +43080,9 @@
   the element's <code title=dom-input-indeterminate><a href=#dom-input-indeterminate>indeterminate</a></code> IDL attribute
   back to the values they had before the <a href=#pre-click-activation-steps>pre-click activation
   steps</a> were run. The <a href=#activation-behavior>activation behavior</a> is to
-  <a href=#fire-a-simple-event>fire a simple event</a> that bubbles named <code title=event-change>change</code> at the element<!-- It's not
+  <a href=#fire-a-simple-event>fire a simple event</a> that bubbles named <code title=event-change>change</code> at the element. <!-- It's not
   cancelable. Once this fires, the control is checked, end of story.
-  -->, then <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code> events</a> from the
-  element's <a href=#form-owner>form owner</a>, if any.</p>
+  --></p>
 
   <p><strong>Constraint validation</strong>: If the element is <i title=concept-input-required><a href=#concept-input-required>required</a></i> and its <a href=#concept-fe-checked title=concept-fe-checked>checkedness</a> is false, then the
   element is <a href=#suffering-from-being-missing>suffering from being missing</a>.</p>
@@ -43252,10 +43215,9 @@
   true. The <a href=#canceled-activation-steps>canceled activation steps</a> consist of setting
   the element's <a href=#concept-fe-checked title=concept-fe-checked>checkedness</a> to
   false. The <a href=#activation-behavior>activation behavior</a> is to <a href=#fire-a-simple-event>fire a
-  simple event</a> that bubbles named <code title=event-change>change</code> at the element<!-- It's not
-  cancelable. Once this fires, the control is checked, end of
-  story. -->, then <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code> events</a> from the
-  element's <a href=#form-owner>form owner</a>, if any.</p>
+  simple event</a> that bubbles named <code title=event-change>change</code> at the element. <!-- It's not
+  cancelable. Once this fires, the control is checked, end of story.
+  -->.</p>
 
   <p><strong>Constraint validation</strong>: If the element is <i title=concept-input-required><a href=#concept-input-required>required</a></i> and all of the
   <code><a href=#the-input-element>input</a></code> elements in the <i><a href=#radio-button-group>radio button group</a></i> have a
@@ -44384,7 +44346,8 @@
    password field and this third field.</p>
 
    <pre><h1>Create new account</h1>
-<form action="/newaccount" method=post>
+<form action="/newaccount" method=post
+      oninput="up2.setCustomValidity(up2.value != up.value ? 'Passwords do not match.' : '')">
  <p>
   <label for="username">E-mail address:</label>
   <input id="username" type=email required name=un>
@@ -44393,7 +44356,7 @@
   <input id="password1" type=password required name=up>
  <p>
   <label for="password2">Confirm password:</label>
-  <input id="password2" type=password onforminput="setCustomValidity(value != password1.value ? 'Passwords do not match.' : '')">
+  <input id="password2" type=password name=up2>
  <p>
   <input type=submit value="Create account">
 </form></pre>
@@ -45060,16 +45023,14 @@
 
   <p>When the <dfn id=event-input-input title=event-input-input><code>input</code></dfn>
   event applies, any time the user causes the element's <a href=#concept-fe-value title=concept-fe-value>value</a> to change, the user agent must
-  <a href=#queue-a-task>queue a task</a> to first <a href=#fire-a-simple-event>fire a simple event</a>
-  that bubbles named <code title=event-input>input</code> at the
-  <code><a href=#the-input-element>input</a></code> element, and then to <a href=#broadcast-forminput-events>broadcast <code title=event-forminput>forminput</code> events</a> from the
-  <code><a href=#the-input-element>input</a></code> element's <a href=#form-owner>form owner</a>, if any. User
-  agents may wait for a suitable break in the user's interaction
-  before queuing the task; for example, a user agent could wait for
-  the user to have not hit a key for 100ms, so as to only fire the
-  event when the user pauses, instead of continuously for each
-  keystroke.</p> <!-- same text is present in the <textarea> section
-  -->
+  <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire a simple event</a> that
+  bubbles named <code title=event-input>input</code> at the
+  <code><a href=#the-input-element>input</a></code> element. User agents may wait for a suitable
+  break in the user's interaction before queuing the task; for
+  example, a user agent could wait for the user to have not hit a key
+  for 100ms, so as to only fire the event when the user pauses,
+  instead of continuously for each keystroke.</p> <!-- same text is
+  present in the <textarea> section -->
 
   <p class=example>Examples of a user changing the element's <a href=#concept-fe-value title=concept-fe-value>value</a> would include the user typing
   into a text field, pasting a new value into the field, or undoing an
@@ -45083,10 +45044,9 @@
   defined but uses a user interface that involves an explicit commit
   action, then any time the user commits a change to the element's
   <a href=#concept-fe-value title=concept-fe-value>value</a> or list of <a href=#concept-input-type-file-selected title=concept-input-type-file-selected>selected files</a>, the
-  user agent must <a href=#queue-a-task>queue a task</a> to first <a href=#fire-a-simple-event>fire a
-  simple event</a> that bubbles named <code title=event-change>change</code> at the <code><a href=#the-input-element>input</a></code>
-  element, and then to <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code> events</a> from the
-  <code><a href=#the-input-element>input</a></code> element's <a href=#form-owner>form owner</a>, if any.</p>
+  user agent must <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire a simple
+  event</a> that bubbles named <code title=event-change>change</code> at the <code><a href=#the-input-element>input</a></code>
+  element.</p>
 
   <p class=example>An example of a user interface with a commit
   action would be a <a href=#file-upload-state title=attr-input-type-file>File
@@ -45111,19 +45071,11 @@
    event</a> that bubbles named <code title=event-input>input</code> at the <code><a href=#the-input-element>input</a></code>
    element.</li>
 
-   <li>If the <code title=event-input-input><a href=#event-input-input>input</a></code> event
-   applies, <a href=#queue-a-task>queue a task</a> to <a href=#broadcast-forminput-events>broadcast <code title=event-forminput>forminput</code> events</a> from the
-   <code><a href=#the-input-element>input</a></code> element's <a href=#form-owner>form owner</a>, if any.</li>
-
    <li>If the <code title=event-input-change><a href=#event-input-change>change</a></code> event
    applies, <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire a simple
    event</a> that bubbles named <code title=event-change>change</code> at the <code><a href=#the-input-element>input</a></code>
    element.</li>
 
-   <li>If the <code title=event-input-change><a href=#event-input-change>change</a></code> event
-   applies, <a href=#queue-a-task>queue a task</a> to <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code> events</a> from the
-   <code><a href=#the-input-element>input</a></code> element's <a href=#form-owner>form owner</a>, if any.</li>
-
   </ol><p class=note>In addition, when the <code title=event-input-change><a href=#event-input-change>change</a></code> event applies, <code title=event-change>change</code> events can also be fired as part
   of the element's <a href=#activation-behavior>activation behavior</a> and as part of the
   <a href=#unfocusing-steps>unfocusing steps</a>.</p>
@@ -45453,11 +45405,10 @@
   <code title=event-click><a href=#event-click>click</a></code> event), the user agent must
   set the <a href=#concept-option-selectedness title=concept-option-selectedness>selectedness</a> of the
   picked <code><a href=#the-option-element>option</a></code> element to true and then <a href=#queue-a-task>queue a
-  task</a> to first <a href=#fire-a-simple-event>fire a simple event</a> that bubbles
-  named <code title=event-change>change</code> at the
-  <code><a href=#the-select-element>select</a></code> element, using the <a href=#user-interaction-task-source>user interaction task
-  source</a> as the task source, and then to <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code> events</a> from the
-  element's <a href=#form-owner>form owner</a>.</p>
+  task</a> to <a href=#fire-a-simple-event>fire a simple event</a> that bubbles named
+  <code title=event-change>change</code> at the <code><a href=#the-select-element>select</a></code>
+  element, using the <a href=#user-interaction-task-source>user interaction task source</a> as the
+  task source.</p>
 
   <p>If the <code title=attr-select-multiple><a href=#attr-select-multiple>multiple</a></code>
   attribute is absent, whenever an <code><a href=#the-option-element>option</a></code> element in the
@@ -45478,11 +45429,10 @@
   interaction event spec point --> is queued (e.g. before the <code title=event-click><a href=#event-click>click</a></code> event), the user agent must set the
   <a href=#concept-option-selectedness title=concept-option-selectedness>selectedness</a> of
   that <code><a href=#the-option-element>option</a></code> element to false and then <a href=#queue-a-task>queue a
-  task</a> to first <a href=#fire-a-simple-event>fire a simple event</a> that bubbles
-  named <code title=event-change>change</code> at the
-  <code><a href=#the-select-element>select</a></code> element, using the <a href=#user-interaction-task-source>user interaction task
-  source</a> as the task source, and then to <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code> events</a> from the
-  element's <a href=#form-owner>form owner</a>.</p>
+  task</a> to <a href=#fire-a-simple-event>fire a simple event</a> that bubbles named
+  <code title=event-change>change</code> at the <code><a href=#the-select-element>select</a></code>
+  element, using the <a href=#user-interaction-task-source>user interaction task source</a> as the
+  task source.</p>
 
   <p>If the <code title=attr-select-multiple><a href=#attr-select-multiple>multiple</a></code>
   attribute is absent and the element's <a href=#concept-select-size title=concept-select-size>display size</a> is 1, then whenever
@@ -45504,11 +45454,10 @@
   more <code><a href=#the-option-element>option</a></code> elements being changed by the user, and
   before the relevant user interaction event <!-- interaction event
   spec point --> is queued (e.g. before a related <code title=event-click><a href=#event-click>click</a></code> event), the user agent must
-  <a href=#queue-a-task>queue a task</a> to first <a href=#fire-a-simple-event>fire a simple event</a>
-  that bubbles named <code title=event-change>change</code> at the
+  <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire a simple event</a> that
+  bubbles named <code title=event-change>change</code> at the
   <code><a href=#the-select-element>select</a></code> element, using the <a href=#user-interaction-task-source>user interaction task
-  source</a> as the task source, and then to <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code> events</a> from the
-  element's <a href=#form-owner>form owner</a>.</p>
+  source</a> as the task source.</p>
 
   <p>The <a href=#concept-form-reset-control title=concept-form-reset-control>reset
   algorithm</a> for <code><a href=#the-select-element>select</a></code> elements is to go through
@@ -46214,15 +46163,14 @@
 
   <p>When a <code><a href=#the-textarea-element>textarea</a></code> is <a href=#concept-textarea-mutable title=concept-textarea-mutable>mutable</a>, its <a href=#concept-textarea-raw-value title=concept-textarea-raw-value>raw value</a> should be
   editable by the user. Any time the user causes the element's <a href=#concept-textarea-raw-value title=concept-textarea-raw-value>raw value</a> to change, the
-  user agent must <a href=#queue-a-task>queue a task</a> to first <a href=#fire-a-simple-event>fire a
-  simple event</a> that bubbles named <code title=event-input>input</code> at the <code><a href=#the-textarea-element>textarea</a></code>
-  element, and then to <a href=#broadcast-forminput-events>broadcast <code title=event-forminput>forminput</code> events</a> from the
-  <code><a href=#the-textarea-element>textarea</a></code> element's <a href=#form-owner>form owner</a>. User agents
-  may wait for a suitable break in the user's interaction before
-  queuing the task; for example, a user agent could wait for the user
-  to have not hit a key for 100ms, so as to only fire the event when
-  the user pauses, instead of continuously for each keystroke.</p>
-  <!-- same text is present in the <input> section -->
+  user agent must <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire a simple
+  event</a> that bubbles named <code title=event-input>input</code> at the <code><a href=#the-textarea-element>textarea</a></code>
+  element. User agents may wait for a suitable break in the user's
+  interaction before queuing the task; for example, a user agent could
+  wait for the user to have not hit a key for 100ms, so as to only
+  fire the event when the user pauses, instead of continuously for
+  each keystroke.</p> <!-- same text is present in the <input> section
+  -->
 
   <p>A <code><a href=#the-textarea-element>textarea</a></code> element has a <dfn id=concept-textarea-dirty title=concept-textarea-dirty>dirty value flag</dfn>, which must be
   initially set to false, and must be set to true whenever the user
@@ -46253,11 +46201,9 @@
    selected a left-to-right writing direction, and "<code title=attr-dir-rtl><a href=#attr-dir-rtl>rtl</a></code>" if the user selected a
    right-to-left writing direction.</li>
 
-   <li><p><a href=#queue-a-task>Queue a task</a> to first <a href=#fire-a-simple-event>fire a simple
+   <li><p><a href=#queue-a-task>Queue a task</a> to <a href=#fire-a-simple-event>fire a simple
    event</a> that bubbles named <code title=event-input>input</code> at the <code><a href=#the-textarea-element>textarea</a></code>
-   element, and to then <a href=#broadcast-forminput-events>broadcast <code title=event-forminput>forminput</code> events</a> from the
-   <code><a href=#the-textarea-element>textarea</a></code> element's <a href=#form-owner>form owner</a>, if
-   any.</li>
+   element.</li>
 
   </ol></div>
 
@@ -46949,10 +46895,10 @@
    <p>A simple calculator could use <code><a href=#the-output-element>output</a></code> for its
    display of calculated results:</p>
 
-   <pre><form onsubmit="return false">
+   <pre><form onsubmit="return false" oninput="o.value = a.valueAsNumber + b.valueAsNumber">
  <input name=a type=number step=any> +
  <input name=b type=number step=any> =
- <output onforminput="value = a.valueAsNumber + b.valueAsNumber"></output>
+ <output name=o></output>
 </form></pre>
 
   </div>
@@ -49398,7 +49344,7 @@
   <a href=#fire-a-simple-event>fire a simple event</a> named <code title=event-reset>reset</code>, that is cancelable, at <var title="">form</var>, and then, if that event is not canceled, must
   invoke the <a href=#concept-form-reset-control title=concept-form-reset-control>reset
   algorithm</a> of each <a href=#category-reset title=category-reset>resettable
-  element</a> whose <a href=#form-owner>form owner</a> is <var title="">form</var>, and <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code> events</a> from <var title="">form</var>.</p>
+  element</a> whose <a href=#form-owner>form owner</a> is <var title="">form</var>.</p>
 
   <p>Each <a href=#category-reset title=category-reset>resettable element</a>
   defines its own <dfn id=concept-form-reset-control title=concept-form-reset-control>reset
@@ -49411,27 +49357,6 @@
 
 
 
-  <div class=impl>
-
-  <h4 id=event-dispatch><span class=secno>4.10.24 </span>Event dispatch</h4>
-
-  <p>When the user agent is to <dfn id=broadcast-forminput-events>broadcast <code title=event-forminput>forminput</code> events</dfn> or
-  <dfn id=broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code>
-  events</dfn> from a <code><a href=#the-form-element>form</a></code> element <var title="">form</var>, it must run the following steps:</p>
-
-  <ol><li><p>Let <var title="">controls</var> be a list of all the <a href=#category-reset title=category-reset>resettable elements</a> whose <a href=#form-owner>form
-   owner</a> is <var title="">form</var>.</li>
-
-   <li>If the user agent was to <a href=#broadcast-forminput-events>broadcast <code title=event-forminput>forminput</code> events</a>, let <var title="">event name</var> be <code title=event-forminput>forminput</code>. Otherwise the user agent
-   was to <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code> events</a>; let <var title="">event name</var> be <code title=event-formchange>formchange</code>.</li>
-
-   <li><p>For each element in <var title="">controls</var>, in
-   <a href=#tree-order>tree order</a>, <a href=#fire-a-simple-event>fire a simple event</a> named
-   <var title="">event name</var> at the element.</li>
-
-  </ol></div>
-
-
   <h3 id=interactive-elements><span class=secno>4.11 </span>Interactive elements</h3>
 
   <h4 id=the-details-element><span class=secno>4.11.1 </span>The <dfn><code>details</code></dfn> element</h4>
@@ -58476,8 +58401,6 @@
            attribute <a href=#function>Function</a> <a href=#handler-onended title=handler-onended>onended</a>;
            attribute <a href=#function>Function</a> <a href=#handler-window-onerror title=handler-window-onerror>onerror</a>;
            attribute <a href=#function>Function</a> <a href=#handler-window-onfocus title=handler-window-onfocus>onfocus</a>;
-           attribute <a href=#function>Function</a> <a href=#handler-onformchange title=handler-onformchange>onformchange</a>;
-           attribute <a href=#function>Function</a> <a href=#handler-onforminput title=handler-onforminput>onforminput</a>;
            attribute <a href=#function>Function</a> <a href=#handler-window-onhashchange title=handler-window-onhashchange>onhashchange</a>;
            attribute <a href=#function>Function</a> <a href=#handler-oninput title=handler-oninput>oninput</a>;
            attribute <a href=#function>Function</a> <a href=#handler-oninvalid title=handler-oninvalid>oninvalid</a>;
@@ -65122,8 +65045,6 @@
     <tr><td><dfn id=handler-ondurationchange title=handler-ondurationchange><code>ondurationchange</code></dfn> <td> <code title=event-media-durationchange><a href=#event-media-durationchange>durationchange</a></code>
     <tr><td><dfn id=handler-onemptied title=handler-onemptied><code>onemptied</code></dfn> <td> <code title=event-media-emptied><a href=#event-media-emptied>emptied</a></code>
     <tr><td><dfn id=handler-onended title=handler-onended><code>onended</code></dfn> <td> <code title=event-media-ended><a href=#event-media-ended>ended</a></code>
-    <tr><td><dfn id=handler-onformchange title=handler-onformchange><code>onformchange</code></dfn> <td> <code title=event-formchange>formchange</code>
-    <tr><td><dfn id=handler-onforminput title=handler-onforminput><code>onforminput</code></dfn> <td> <code title=event-forminput>forminput</code>
     <tr><td><dfn id=handler-oninput title=handler-oninput><code>oninput</code></dfn> <td> <code title=event-input>input</code>
     <tr><td><dfn id=handler-oninvalid title=handler-oninvalid><code>oninvalid</code></dfn> <td> <code title=event-invalid>invalid</code>
     <tr><td><dfn id=handler-onkeydown title=handler-onkeydown><code>onkeydown</code></dfn> <td> <code title=event-keydown>keydown</code> <!-- widely used -->
@@ -67112,9 +67033,7 @@
    element, and the element does not have a defined <a href=#activation-behavior>activation
    behavior</a>, and the user has changed the element's <a href=#concept-fe-value title=concept-fe-value>value</a> or its list of <a href=#concept-input-type-file-selected title=concept-input-type-file-selected>selected files</a>
    while the control was focused without committing that change, then
-   <a href=#fire-a-simple-event>fire a simple event</a> that bubbles named <code title=event-change>change</code> at the element, then
-   <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code>
-   events</a> at the element's <a href=#form-owner>form owner</a>.</p>
+   <a href=#fire-a-simple-event>fire a simple event</a> that bubbles named <code title=event-change>change</code> at the element.</p>
 
    <li><p>Unfocus the element.</li>
 
@@ -93275,16 +93194,6 @@
      <td> <code title=event-focus>focus</code> event handler
      <td> <a href=#event-handler-content-attributes title="event handler content attributes">Event handler content attribute</a>
 
-    <tr><th id=ix-handler-onformchange> <code title="">onformchange</code>
-     <td> <a href=#handler-onformchange title=handler-onformchange>HTML elements</a>
-     <td> <code title=event-formchange>formchange</code> event handler
-     <td> <a href=#event-handler-content-attributes title="event handler content attributes">Event handler content attribute</a>
-
-    <tr><th id=ix-handler-onforminput> <code title="">onforminput</code>
-     <td> <a href=#handler-onforminput title=handler-onforminput>HTML elements</a>
-     <td> <code title=event-forminput>forminput</code> event handler
-     <td> <a href=#event-handler-content-attributes title="event handler content attributes">Event handler content attribute</a>
-
     <tr><th id=ix-handler-window-onhashchange> <code title="">onhashchange</code>
      <td> <code title=handler-window-onhashchange><a href=#handler-window-onhashchange>body</a></code>
      <td> <code title=event-hashchange><a href=#event-hashchange>hashchange</a></code> event handler for <code><a href=#window>Window</a></code> object

Modified: index
===================================================================
--- index	2011-03-03 23:04:57 UTC (rev 5927)
+++ index	2011-03-03 23:22:14 UTC (rev 5928)
@@ -755,8 +755,7 @@
        <li><a href=#url-encoded-form-data><span class=secno>4.10.22.4 </span>URL-encoded form data</a></li>
        <li><a href=#multipart-form-data><span class=secno>4.10.22.5 </span>Multipart form data</a></li>
        <li><a href=#plain-text-form-data><span class=secno>4.10.22.6 </span>Plain text form data</a></ol></li>
-     <li><a href=#resetting-a-form><span class=secno>4.10.23 </span>Resetting a form</a></li>
-     <li><a href=#event-dispatch><span class=secno>4.10.24 </span>Event dispatch</a></ol></li>
+     <li><a href=#resetting-a-form><span class=secno>4.10.23 </span>Resetting a form</a></ol></li>
    <li><a href=#interactive-elements><span class=secno>4.11 </span>Interactive elements</a>
     <ol>
      <li><a href=#the-details-element><span class=secno>4.11.1 </span>The <code>details</code> element</a></li>
@@ -8344,8 +8343,6 @@
            attribute <a href=#function>Function</a> <a href=#handler-onended title=handler-onended>onended</a>;
            attribute <a href=#function>Function</a> <a href=#handler-onerror title=handler-onerror>onerror</a>;
            attribute <a href=#function>Function</a> <a href=#handler-onfocus title=handler-onfocus>onfocus</a>;
-           attribute <a href=#function>Function</a> <a href=#handler-onformchange title=handler-onformchange>onformchange</a>;
-           attribute <a href=#function>Function</a> <a href=#handler-onforminput title=handler-onforminput>onforminput</a>;
            attribute <a href=#function>Function</a> <a href=#handler-oninput title=handler-oninput>oninput</a>;
            attribute <a href=#function>Function</a> <a href=#handler-oninvalid title=handler-oninvalid>oninvalid</a>;
            attribute <a href=#function>Function</a> <a href=#handler-onkeydown title=handler-onkeydown>onkeydown</a>;
@@ -9526,8 +9523,6 @@
            attribute <a href=#function>Function</a> <a href=#handler-onended title=handler-onended>onended</a>;
            attribute <a href=#function>Function</a> <a href=#handler-onerror title=handler-onerror>onerror</a>;
            attribute <a href=#function>Function</a> <a href=#handler-onfocus title=handler-onfocus>onfocus</a>;
-           attribute <a href=#function>Function</a> <a href=#handler-onformchange title=handler-onformchange>onformchange</a>;
-           attribute <a href=#function>Function</a> <a href=#handler-onforminput title=handler-onforminput>onforminput</a>;
            attribute <a href=#function>Function</a> <a href=#handler-oninput title=handler-oninput>oninput</a>;
            attribute <a href=#function>Function</a> <a href=#handler-oninvalid title=handler-oninvalid>oninvalid</a>;
            attribute <a href=#function>Function</a> <a href=#handler-onkeydown title=handler-onkeydown>onkeydown</a>;
@@ -9634,8 +9629,6 @@
    <li><code title=handler-onended><a href=#handler-onended>onended</a></code></li>
    <li><code title=handler-onerror><a href=#handler-onerror>onerror</a></code>*</li>
    <li><code title=handler-onfocus><a href=#handler-onfocus>onfocus</a></code>*</li>
-   <li><code title=handler-onformchange><a href=#handler-onformchange>onformchange</a></code></li>
-   <li><code title=handler-onforminput><a href=#handler-onforminput>onforminput</a></code></li>
    <li><code title=handler-oninput><a href=#handler-oninput>oninput</a></code></li>
    <li><code title=handler-oninvalid><a href=#handler-oninvalid>oninvalid</a></code></li>
    <li><code title=handler-onkeydown><a href=#handler-onkeydown>onkeydown</a></code></li>
@@ -15637,16 +15630,16 @@
   <legend>Work out the price of your car</legend>
   <p>Base cost: £52000.</p>
   <p>Select additional options:</p>
-  <ul>
+  <ul onchange="calculate(form)">
    <li><label><input type=checkbox name=brakes> Ceramic brakes (£1000)</label></li>
    <li><label><input type=checkbox name=radio> Satellite radio (£2500)</label></li>
    <li><label><input type=checkbox name=turbo> Turbo charger (£5000)</label></li>
    <li><label><input type=checkbox name=sticker> "XZ" sticker (£250)</label></li>
   </ul>
-  <p>Total: £<output name=result onformchange="calculate(form)"></output></p>
+  <p>Total: £<output name=result></output></p>
  </fieldset>
  <script>
-  document.forms.pricecalc.dispatchFormChange();
+  calculate(document.forms.pricecalc);
  </script>
 </form></pre>
 
@@ -38887,9 +38880,6 @@
   void <a href=#dom-form-submit title=dom-form-submit>submit</a>();
   void <a href=#dom-form-reset title=dom-form-reset>reset</a>();
   boolean <a href=#dom-form-checkvalidity title=dom-form-checkValidity>checkValidity</a>();
-
-  void <a href=#dom-form-dispatchforminput title=dom-form-dispatchFormInput>dispatchFormInput</a>();
-  void <a href=#dom-form-dispatchformchange title=dom-form-dispatchFormChange>dispatchFormChange</a>();
 };</pre>
    </dd>
   </dl><p>The <code><a href=#the-form-element>form</a></code> element <a href=#represents>represents</a> a
@@ -39002,22 +38992,6 @@
 
    </dd>
 
-   <dt><var title="">form</var> . <code title=dom-form-dispatchFormInput><a href=#dom-form-dispatchforminput>dispatchFormInput</a></code>()</dt>
-
-   <dd>
-
-    <p>Dispatches a <code title=event-forminput>forminput</code> event at all the form controls.</p>
-
-   </dd>
-
-   <dt><var title="">form</var> . <code title=dom-form-dispatchFormChange><a href=#dom-form-dispatchformchange>dispatchFormChange</a></code>()</dt>
-
-   <dd>
-
-    <p>Dispatches a <code title=event-formchange>formchange</code> event at all the form controls.</p>
-
-   </dd>
-
   </dl><div class=impl>
 
   <p>The <dfn id=dom-form-autocomplete title=dom-form-autocomplete><code>autocomplete</code></dfn> IDL
@@ -39140,14 +39114,6 @@
   if the constraint validation return a <i>positive</i> result, and
   false if it returned a <i>negative</i> result.</p>
 
-  <p>If the <dfn id=dom-form-dispatchforminput title=dom-form-dispatchFormInput><code>dispatchFormInput()</code></dfn>
-  method is invoked, the user agent must <a href=#broadcast-forminput-events>broadcast <code title=event-forminput>forminput</code> events</a> from the
-  <code><a href=#the-form-element>form</a></code> element.</p>
-
-  <p>If the <dfn id=dom-form-dispatchformchange title=dom-form-dispatchFormChange><code>dispatchFormChange()</code></dfn>
-  method is invoked, the user agent must <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code> events</a> from the
-  <code><a href=#the-form-element>form</a></code> element.</p>
-
   </div>
 
   <div class=example>
@@ -41008,11 +40974,9 @@
    selected a left-to-right writing direction, and "<code title=attr-dir-rtl><a href=#attr-dir-rtl>rtl</a></code>" if the user selected a
    right-to-left writing direction.</li>
 
-   <li><p><a href=#queue-a-task>Queue a task</a> to first <a href=#fire-a-simple-event>fire a simple
-   event</a> that bubbles named <code title=event-input>input</code> at the <code><a href=#the-input-element>input</a></code> element,
-   and to then <a href=#broadcast-forminput-events>broadcast <code title=event-forminput>forminput</code> events</a> from the
-   <code><a href=#the-input-element>input</a></code> element's <a href=#form-owner>form owner</a>, if
-   any.</li>
+   <li><p><a href=#queue-a-task>Queue a task</a> to <a href=#fire-a-simple-event>fire a simple
+   event</a> that bubbles named <code title=event-input>input</code> at the <code><a href=#the-input-element>input</a></code>
+   element.</li>
 
   </ol></div>
 
@@ -43099,10 +43063,9 @@
   the element's <code title=dom-input-indeterminate><a href=#dom-input-indeterminate>indeterminate</a></code> IDL attribute
   back to the values they had before the <a href=#pre-click-activation-steps>pre-click activation
   steps</a> were run. The <a href=#activation-behavior>activation behavior</a> is to
-  <a href=#fire-a-simple-event>fire a simple event</a> that bubbles named <code title=event-change>change</code> at the element<!-- It's not
+  <a href=#fire-a-simple-event>fire a simple event</a> that bubbles named <code title=event-change>change</code> at the element. <!-- It's not
   cancelable. Once this fires, the control is checked, end of story.
-  -->, then <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code> events</a> from the
-  element's <a href=#form-owner>form owner</a>, if any.</p>
+  --></p>
 
   <p><strong>Constraint validation</strong>: If the element is <i title=concept-input-required><a href=#concept-input-required>required</a></i> and its <a href=#concept-fe-checked title=concept-fe-checked>checkedness</a> is false, then the
   element is <a href=#suffering-from-being-missing>suffering from being missing</a>.</p>
@@ -43235,10 +43198,9 @@
   true. The <a href=#canceled-activation-steps>canceled activation steps</a> consist of setting
   the element's <a href=#concept-fe-checked title=concept-fe-checked>checkedness</a> to
   false. The <a href=#activation-behavior>activation behavior</a> is to <a href=#fire-a-simple-event>fire a
-  simple event</a> that bubbles named <code title=event-change>change</code> at the element<!-- It's not
-  cancelable. Once this fires, the control is checked, end of
-  story. -->, then <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code> events</a> from the
-  element's <a href=#form-owner>form owner</a>, if any.</p>
+  simple event</a> that bubbles named <code title=event-change>change</code> at the element. <!-- It's not
+  cancelable. Once this fires, the control is checked, end of story.
+  -->.</p>
 
   <p><strong>Constraint validation</strong>: If the element is <i title=concept-input-required><a href=#concept-input-required>required</a></i> and all of the
   <code><a href=#the-input-element>input</a></code> elements in the <i><a href=#radio-button-group>radio button group</a></i> have a
@@ -44367,7 +44329,8 @@
    password field and this third field.</p>
 
    <pre><h1>Create new account</h1>
-<form action="/newaccount" method=post>
+<form action="/newaccount" method=post
+      oninput="up2.setCustomValidity(up2.value != up.value ? 'Passwords do not match.' : '')">
  <p>
   <label for="username">E-mail address:</label>
   <input id="username" type=email required name=un>
@@ -44376,7 +44339,7 @@
   <input id="password1" type=password required name=up>
  <p>
   <label for="password2">Confirm password:</label>
-  <input id="password2" type=password onforminput="setCustomValidity(value != password1.value ? 'Passwords do not match.' : '')">
+  <input id="password2" type=password name=up2>
  <p>
   <input type=submit value="Create account">
 </form></pre>
@@ -45043,16 +45006,14 @@
 
   <p>When the <dfn id=event-input-input title=event-input-input><code>input</code></dfn>
   event applies, any time the user causes the element's <a href=#concept-fe-value title=concept-fe-value>value</a> to change, the user agent must
-  <a href=#queue-a-task>queue a task</a> to first <a href=#fire-a-simple-event>fire a simple event</a>
-  that bubbles named <code title=event-input>input</code> at the
-  <code><a href=#the-input-element>input</a></code> element, and then to <a href=#broadcast-forminput-events>broadcast <code title=event-forminput>forminput</code> events</a> from the
-  <code><a href=#the-input-element>input</a></code> element's <a href=#form-owner>form owner</a>, if any. User
-  agents may wait for a suitable break in the user's interaction
-  before queuing the task; for example, a user agent could wait for
-  the user to have not hit a key for 100ms, so as to only fire the
-  event when the user pauses, instead of continuously for each
-  keystroke.</p> <!-- same text is present in the <textarea> section
-  -->
+  <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire a simple event</a> that
+  bubbles named <code title=event-input>input</code> at the
+  <code><a href=#the-input-element>input</a></code> element. User agents may wait for a suitable
+  break in the user's interaction before queuing the task; for
+  example, a user agent could wait for the user to have not hit a key
+  for 100ms, so as to only fire the event when the user pauses,
+  instead of continuously for each keystroke.</p> <!-- same text is
+  present in the <textarea> section -->
 
   <p class=example>Examples of a user changing the element's <a href=#concept-fe-value title=concept-fe-value>value</a> would include the user typing
   into a text field, pasting a new value into the field, or undoing an
@@ -45066,10 +45027,9 @@
   defined but uses a user interface that involves an explicit commit
   action, then any time the user commits a change to the element's
   <a href=#concept-fe-value title=concept-fe-value>value</a> or list of <a href=#concept-input-type-file-selected title=concept-input-type-file-selected>selected files</a>, the
-  user agent must <a href=#queue-a-task>queue a task</a> to first <a href=#fire-a-simple-event>fire a
-  simple event</a> that bubbles named <code title=event-change>change</code> at the <code><a href=#the-input-element>input</a></code>
-  element, and then to <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code> events</a> from the
-  <code><a href=#the-input-element>input</a></code> element's <a href=#form-owner>form owner</a>, if any.</p>
+  user agent must <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire a simple
+  event</a> that bubbles named <code title=event-change>change</code> at the <code><a href=#the-input-element>input</a></code>
+  element.</p>
 
   <p class=example>An example of a user interface with a commit
   action would be a <a href=#file-upload-state title=attr-input-type-file>File
@@ -45094,19 +45054,11 @@
    event</a> that bubbles named <code title=event-input>input</code> at the <code><a href=#the-input-element>input</a></code>
    element.</li>
 
-   <li>If the <code title=event-input-input><a href=#event-input-input>input</a></code> event
-   applies, <a href=#queue-a-task>queue a task</a> to <a href=#broadcast-forminput-events>broadcast <code title=event-forminput>forminput</code> events</a> from the
-   <code><a href=#the-input-element>input</a></code> element's <a href=#form-owner>form owner</a>, if any.</li>
-
    <li>If the <code title=event-input-change><a href=#event-input-change>change</a></code> event
    applies, <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire a simple
    event</a> that bubbles named <code title=event-change>change</code> at the <code><a href=#the-input-element>input</a></code>
    element.</li>
 
-   <li>If the <code title=event-input-change><a href=#event-input-change>change</a></code> event
-   applies, <a href=#queue-a-task>queue a task</a> to <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code> events</a> from the
-   <code><a href=#the-input-element>input</a></code> element's <a href=#form-owner>form owner</a>, if any.</li>
-
   </ol><p class=note>In addition, when the <code title=event-input-change><a href=#event-input-change>change</a></code> event applies, <code title=event-change>change</code> events can also be fired as part
   of the element's <a href=#activation-behavior>activation behavior</a> and as part of the
   <a href=#unfocusing-steps>unfocusing steps</a>.</p>
@@ -45436,11 +45388,10 @@
   <code title=event-click><a href=#event-click>click</a></code> event), the user agent must
   set the <a href=#concept-option-selectedness title=concept-option-selectedness>selectedness</a> of the
   picked <code><a href=#the-option-element>option</a></code> element to true and then <a href=#queue-a-task>queue a
-  task</a> to first <a href=#fire-a-simple-event>fire a simple event</a> that bubbles
-  named <code title=event-change>change</code> at the
-  <code><a href=#the-select-element>select</a></code> element, using the <a href=#user-interaction-task-source>user interaction task
-  source</a> as the task source, and then to <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code> events</a> from the
-  element's <a href=#form-owner>form owner</a>.</p>
+  task</a> to <a href=#fire-a-simple-event>fire a simple event</a> that bubbles named
+  <code title=event-change>change</code> at the <code><a href=#the-select-element>select</a></code>
+  element, using the <a href=#user-interaction-task-source>user interaction task source</a> as the
+  task source.</p>
 
   <p>If the <code title=attr-select-multiple><a href=#attr-select-multiple>multiple</a></code>
   attribute is absent, whenever an <code><a href=#the-option-element>option</a></code> element in the
@@ -45461,11 +45412,10 @@
   interaction event spec point --> is queued (e.g. before the <code title=event-click><a href=#event-click>click</a></code> event), the user agent must set the
   <a href=#concept-option-selectedness title=concept-option-selectedness>selectedness</a> of
   that <code><a href=#the-option-element>option</a></code> element to false and then <a href=#queue-a-task>queue a
-  task</a> to first <a href=#fire-a-simple-event>fire a simple event</a> that bubbles
-  named <code title=event-change>change</code> at the
-  <code><a href=#the-select-element>select</a></code> element, using the <a href=#user-interaction-task-source>user interaction task
-  source</a> as the task source, and then to <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code> events</a> from the
-  element's <a href=#form-owner>form owner</a>.</p>
+  task</a> to <a href=#fire-a-simple-event>fire a simple event</a> that bubbles named
+  <code title=event-change>change</code> at the <code><a href=#the-select-element>select</a></code>
+  element, using the <a href=#user-interaction-task-source>user interaction task source</a> as the
+  task source.</p>
 
   <p>If the <code title=attr-select-multiple><a href=#attr-select-multiple>multiple</a></code>
   attribute is absent and the element's <a href=#concept-select-size title=concept-select-size>display size</a> is 1, then whenever
@@ -45487,11 +45437,10 @@
   more <code><a href=#the-option-element>option</a></code> elements being changed by the user, and
   before the relevant user interaction event <!-- interaction event
   spec point --> is queued (e.g. before a related <code title=event-click><a href=#event-click>click</a></code> event), the user agent must
-  <a href=#queue-a-task>queue a task</a> to first <a href=#fire-a-simple-event>fire a simple event</a>
-  that bubbles named <code title=event-change>change</code> at the
+  <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire a simple event</a> that
+  bubbles named <code title=event-change>change</code> at the
   <code><a href=#the-select-element>select</a></code> element, using the <a href=#user-interaction-task-source>user interaction task
-  source</a> as the task source, and then to <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code> events</a> from the
-  element's <a href=#form-owner>form owner</a>.</p>
+  source</a> as the task source.</p>
 
   <p>The <a href=#concept-form-reset-control title=concept-form-reset-control>reset
   algorithm</a> for <code><a href=#the-select-element>select</a></code> elements is to go through
@@ -46197,15 +46146,14 @@
 
   <p>When a <code><a href=#the-textarea-element>textarea</a></code> is <a href=#concept-textarea-mutable title=concept-textarea-mutable>mutable</a>, its <a href=#concept-textarea-raw-value title=concept-textarea-raw-value>raw value</a> should be
   editable by the user. Any time the user causes the element's <a href=#concept-textarea-raw-value title=concept-textarea-raw-value>raw value</a> to change, the
-  user agent must <a href=#queue-a-task>queue a task</a> to first <a href=#fire-a-simple-event>fire a
-  simple event</a> that bubbles named <code title=event-input>input</code> at the <code><a href=#the-textarea-element>textarea</a></code>
-  element, and then to <a href=#broadcast-forminput-events>broadcast <code title=event-forminput>forminput</code> events</a> from the
-  <code><a href=#the-textarea-element>textarea</a></code> element's <a href=#form-owner>form owner</a>. User agents
-  may wait for a suitable break in the user's interaction before
-  queuing the task; for example, a user agent could wait for the user
-  to have not hit a key for 100ms, so as to only fire the event when
-  the user pauses, instead of continuously for each keystroke.</p>
-  <!-- same text is present in the <input> section -->
+  user agent must <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire a simple
+  event</a> that bubbles named <code title=event-input>input</code> at the <code><a href=#the-textarea-element>textarea</a></code>
+  element. User agents may wait for a suitable break in the user's
+  interaction before queuing the task; for example, a user agent could
+  wait for the user to have not hit a key for 100ms, so as to only
+  fire the event when the user pauses, instead of continuously for
+  each keystroke.</p> <!-- same text is present in the <input> section
+  -->
 
   <p>A <code><a href=#the-textarea-element>textarea</a></code> element has a <dfn id=concept-textarea-dirty title=concept-textarea-dirty>dirty value flag</dfn>, which must be
   initially set to false, and must be set to true whenever the user
@@ -46236,11 +46184,9 @@
    selected a left-to-right writing direction, and "<code title=attr-dir-rtl><a href=#attr-dir-rtl>rtl</a></code>" if the user selected a
    right-to-left writing direction.</li>
 
-   <li><p><a href=#queue-a-task>Queue a task</a> to first <a href=#fire-a-simple-event>fire a simple
+   <li><p><a href=#queue-a-task>Queue a task</a> to <a href=#fire-a-simple-event>fire a simple
    event</a> that bubbles named <code title=event-input>input</code> at the <code><a href=#the-textarea-element>textarea</a></code>
-   element, and to then <a href=#broadcast-forminput-events>broadcast <code title=event-forminput>forminput</code> events</a> from the
-   <code><a href=#the-textarea-element>textarea</a></code> element's <a href=#form-owner>form owner</a>, if
-   any.</li>
+   element.</li>
 
   </ol></div>
 
@@ -46932,10 +46878,10 @@
    <p>A simple calculator could use <code><a href=#the-output-element>output</a></code> for its
    display of calculated results:</p>
 
-   <pre><form onsubmit="return false">
+   <pre><form onsubmit="return false" oninput="o.value = a.valueAsNumber + b.valueAsNumber">
  <input name=a type=number step=any> +
  <input name=b type=number step=any> =
- <output onforminput="value = a.valueAsNumber + b.valueAsNumber"></output>
+ <output name=o></output>
 </form></pre>
 
   </div>
@@ -49381,7 +49327,7 @@
   <a href=#fire-a-simple-event>fire a simple event</a> named <code title=event-reset>reset</code>, that is cancelable, at <var title="">form</var>, and then, if that event is not canceled, must
   invoke the <a href=#concept-form-reset-control title=concept-form-reset-control>reset
   algorithm</a> of each <a href=#category-reset title=category-reset>resettable
-  element</a> whose <a href=#form-owner>form owner</a> is <var title="">form</var>, and <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code> events</a> from <var title="">form</var>.</p>
+  element</a> whose <a href=#form-owner>form owner</a> is <var title="">form</var>.</p>
 
   <p>Each <a href=#category-reset title=category-reset>resettable element</a>
   defines its own <dfn id=concept-form-reset-control title=concept-form-reset-control>reset
@@ -49394,27 +49340,6 @@
 
 
 
-  <div class=impl>
-
-  <h4 id=event-dispatch><span class=secno>4.10.24 </span>Event dispatch</h4>
-
-  <p>When the user agent is to <dfn id=broadcast-forminput-events>broadcast <code title=event-forminput>forminput</code> events</dfn> or
-  <dfn id=broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code>
-  events</dfn> from a <code><a href=#the-form-element>form</a></code> element <var title="">form</var>, it must run the following steps:</p>
-
-  <ol><li><p>Let <var title="">controls</var> be a list of all the <a href=#category-reset title=category-reset>resettable elements</a> whose <a href=#form-owner>form
-   owner</a> is <var title="">form</var>.</li>
-
-   <li>If the user agent was to <a href=#broadcast-forminput-events>broadcast <code title=event-forminput>forminput</code> events</a>, let <var title="">event name</var> be <code title=event-forminput>forminput</code>. Otherwise the user agent
-   was to <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code> events</a>; let <var title="">event name</var> be <code title=event-formchange>formchange</code>.</li>
-
-   <li><p>For each element in <var title="">controls</var>, in
-   <a href=#tree-order>tree order</a>, <a href=#fire-a-simple-event>fire a simple event</a> named
-   <var title="">event name</var> at the element.</li>
-
-  </ol></div>
-
-
   <h3 id=interactive-elements><span class=secno>4.11 </span>Interactive elements</h3>
 
   <h4 id=the-details-element><span class=secno>4.11.1 </span>The <dfn><code>details</code></dfn> element</h4>
@@ -58459,8 +58384,6 @@
            attribute <a href=#function>Function</a> <a href=#handler-onended title=handler-onended>onended</a>;
            attribute <a href=#function>Function</a> <a href=#handler-window-onerror title=handler-window-onerror>onerror</a>;
            attribute <a href=#function>Function</a> <a href=#handler-window-onfocus title=handler-window-onfocus>onfocus</a>;
-           attribute <a href=#function>Function</a> <a href=#handler-onformchange title=handler-onformchange>onformchange</a>;
-           attribute <a href=#function>Function</a> <a href=#handler-onforminput title=handler-onforminput>onforminput</a>;
            attribute <a href=#function>Function</a> <a href=#handler-window-onhashchange title=handler-window-onhashchange>onhashchange</a>;
            attribute <a href=#function>Function</a> <a href=#handler-oninput title=handler-oninput>oninput</a>;
            attribute <a href=#function>Function</a> <a href=#handler-oninvalid title=handler-oninvalid>oninvalid</a>;
@@ -65125,8 +65048,6 @@
     <tr><td><dfn id=handler-ondurationchange title=handler-ondurationchange><code>ondurationchange</code></dfn> <td> <code title=event-media-durationchange><a href=#event-media-durationchange>durationchange</a></code>
     <tr><td><dfn id=handler-onemptied title=handler-onemptied><code>onemptied</code></dfn> <td> <code title=event-media-emptied><a href=#event-media-emptied>emptied</a></code>
     <tr><td><dfn id=handler-onended title=handler-onended><code>onended</code></dfn> <td> <code title=event-media-ended><a href=#event-media-ended>ended</a></code>
-    <tr><td><dfn id=handler-onformchange title=handler-onformchange><code>onformchange</code></dfn> <td> <code title=event-formchange>formchange</code>
-    <tr><td><dfn id=handler-onforminput title=handler-onforminput><code>onforminput</code></dfn> <td> <code title=event-forminput>forminput</code>
     <tr><td><dfn id=handler-oninput title=handler-oninput><code>oninput</code></dfn> <td> <code title=event-input>input</code>
     <tr><td><dfn id=handler-oninvalid title=handler-oninvalid><code>oninvalid</code></dfn> <td> <code title=event-invalid>invalid</code>
     <tr><td><dfn id=handler-onkeydown title=handler-onkeydown><code>onkeydown</code></dfn> <td> <code title=event-keydown>keydown</code> <!-- widely used -->
@@ -67121,9 +67042,7 @@
    element, and the element does not have a defined <a href=#activation-behavior>activation
    behavior</a>, and the user has changed the element's <a href=#concept-fe-value title=concept-fe-value>value</a> or its list of <a href=#concept-input-type-file-selected title=concept-input-type-file-selected>selected files</a>
    while the control was focused without committing that change, then
-   <a href=#fire-a-simple-event>fire a simple event</a> that bubbles named <code title=event-change>change</code> at the element, then
-   <a href=#broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code>
-   events</a> at the element's <a href=#form-owner>form owner</a>.</p>
+   <a href=#fire-a-simple-event>fire a simple event</a> that bubbles named <code title=event-change>change</code> at the element.</p>
 
    <li><p>Unfocus the element.</li>
 
@@ -89246,16 +89165,6 @@
      <td> <code title=event-focus>focus</code> event handler
      <td> <a href=#event-handler-content-attributes title="event handler content attributes">Event handler content attribute</a>
 
-    <tr><th id=ix-handler-onformchange> <code title="">onformchange</code>
-     <td> <a href=#handler-onformchange title=handler-onformchange>HTML elements</a>
-     <td> <code title=event-formchange>formchange</code> event handler
-     <td> <a href=#event-handler-content-attributes title="event handler content attributes">Event handler content attribute</a>
-
-    <tr><th id=ix-handler-onforminput> <code title="">onforminput</code>
-     <td> <a href=#handler-onforminput title=handler-onforminput>HTML elements</a>
-     <td> <code title=event-forminput>forminput</code> event handler
-     <td> <a href=#event-handler-content-attributes title="event handler content attributes">Event handler content attribute</a>
-
     <tr><th id=ix-handler-window-onhashchange> <code title="">onhashchange</code>
      <td> <code title=handler-window-onhashchange><a href=#handler-window-onhashchange>body</a></code>
      <td> <code title=event-hashchange><a href=#event-hashchange>hashchange</a></code> event handler for <code><a href=#window>Window</a></code> object
@@ -89888,14 +89797,6 @@
      <td> <code><a href=#event>Event</a></code>
      <td> Fired at nodes gaining focus
 
-    <tr><td> <code title=event-formchange>formchange</code>
-     <td> <code><a href=#event>Event</a></code>
-     <td> Fired at form controls when the user commits a value change to a control on the form
-
-    <tr><td> <code title=event-forminput>forminput</code>
-     <td> <code><a href=#event>Event</a></code>
-     <td> Fired at form controls when the user changes the value of a control on the form
-
     <tr><td> <code title=event-hashchange><a href=#event-hashchange>hashchange</a></code>
      <td> <code><a href=#hashchangeevent>HashChangeEvent</a></code>
      <td> Fired at the <code><a href=#window>Window</a></code> when the fragment identifier part of <a href="#the-document's-current-address">the document's current address</a> changes

Modified: source
===================================================================
--- source	2011-03-03 23:04:57 UTC (rev 5927)
+++ source	2011-03-03 23:22:14 UTC (rev 5928)
@@ -8253,8 +8253,6 @@
            attribute <span>Function</span> <span title="handler-onended">onended</span>;
            attribute <span>Function</span> <span title="handler-onerror">onerror</span>;
            attribute <span>Function</span> <span title="handler-onfocus">onfocus</span>;
-           attribute <span>Function</span> <span title="handler-onformchange">onformchange</span>;
-           attribute <span>Function</span> <span title="handler-onforminput">onforminput</span>;
            attribute <span>Function</span> <span title="handler-oninput">oninput</span>;
            attribute <span>Function</span> <span title="handler-oninvalid">oninvalid</span>;
            attribute <span>Function</span> <span title="handler-onkeydown">onkeydown</span>;
@@ -9653,8 +9651,6 @@
            attribute <span>Function</span> <span title="handler-onended">onended</span>;
            attribute <span>Function</span> <span title="handler-onerror">onerror</span>;
            attribute <span>Function</span> <span title="handler-onfocus">onfocus</span>;
-           attribute <span>Function</span> <span title="handler-onformchange">onformchange</span>;
-           attribute <span>Function</span> <span title="handler-onforminput">onforminput</span>;
            attribute <span>Function</span> <span title="handler-oninput">oninput</span>;
            attribute <span>Function</span> <span title="handler-oninvalid">oninvalid</span>;
            attribute <span>Function</span> <span title="handler-onkeydown">onkeydown</span>;
@@ -9767,8 +9763,6 @@
    <li><code title="handler-onended">onended</code></li>
    <li><code title="handler-onerror">onerror</code>*</li>
    <li><code title="handler-onfocus">onfocus</code>*</li>
-   <li><code title="handler-onformchange">onformchange</code></li>
-   <li><code title="handler-onforminput">onforminput</code></li>
    <li><code title="handler-oninput">oninput</code></li>
    <li><code title="handler-oninvalid">oninvalid</code></li>
    <li><code title="handler-onkeydown">onkeydown</code></li>
@@ -16653,16 +16647,16 @@
   <legend>Work out the price of your car</legend>
   <p>Base cost: £52000.</p>
   <p>Select additional options:</p>
-  <ul>
+  <ul onchange="calculate(form)">
    <li><label><input type=checkbox name=brakes> Ceramic brakes (£1000)</label></li>
    <li><label><input type=checkbox name=radio> Satellite radio (£2500)</label></li>
    <li><label><input type=checkbox name=turbo> Turbo charger (£5000)</label></li>
    <li><label><input type=checkbox name=sticker> "XZ" sticker (£250)</label></li>
   </ul>
-  <p>Total: £<output name=result onformchange="calculate(form)"></output></p>
+  <p>Total: £<output name=result></output></p>
  </fieldset>
  <script>
-  document.forms.pricecalc.dispatchFormChange();
+  calculate(document.forms.pricecalc);
  </script>
 </form></pre>
 
@@ -43261,9 +43255,6 @@
   void <span title="dom-form-submit">submit</span>();
   void <span title="dom-form-reset">reset</span>();
   boolean <span title="dom-form-checkValidity">checkValidity</span>();
-
-  void <span title="dom-form-dispatchFormInput">dispatchFormInput</span>();
-  void <span title="dom-form-dispatchFormChange">dispatchFormChange</span>();
 };</pre>
    </dd>
   </dl>
@@ -43398,22 +43389,6 @@
 
    </dd>
 
-   <dt><var title="">form</var> . <code title="dom-form-dispatchFormInput">dispatchFormInput</code>()</dt>
-
-   <dd>
-
-    <p>Dispatches a <code title="event-forminput">forminput</code> event at all the form controls.</p>
-
-   </dd>
-
-   <dt><var title="">form</var> . <code title="dom-form-dispatchFormChange">dispatchFormChange</code>()</dt>
-
-   <dd>
-
-    <p>Dispatches a <code title="event-formchange">formchange</code> event at all the form controls.</p>
-
-   </dd>
-
   </dl>
 
   <div class="impl">
@@ -43574,18 +43549,6 @@
   if the constraint validation return a <i>positive</i> result, and
   false if it returned a <i>negative</i> result.</p>
 
-  <p>If the <dfn
-  title="dom-form-dispatchFormInput"><code>dispatchFormInput()</code></dfn>
-  method is invoked, the user agent must <span>broadcast <code
-  title="event-forminput">forminput</code> events</span> from the
-  <code>form</code> element.</p>
-
-  <p>If the <dfn
-  title="dom-form-dispatchFormChange"><code>dispatchFormChange()</code></dfn>
-  method is invoked, the user agent must <span>broadcast <code
-  title="event-formchange">formchange</code> events</span> from the
-  <code>form</code> element.</p>
-
   </div>
 
   <div class="example">
@@ -45720,13 +45683,10 @@
    title="attr-dir-rtl">rtl</code>" if the user selected a
    right-to-left writing direction.</p></li>
 
-   <li><p><span>Queue a task</span> to first <span>fire a simple
+   <li><p><span>Queue a task</span> to <span>fire a simple
    event</span> that bubbles named <code
-   title="event-input">input</code> at the <code>input</code> element,
-   and to then <span>broadcast <code
-   title="event-forminput">forminput</code> events</span> from the
-   <code>input</code> element's <span>form owner</span>, if
-   any.</p></li>
+   title="event-input">input</code> at the <code>input</code>
+   element.</p></li>
 
   </ol>
 
@@ -48067,11 +48027,9 @@
   back to the values they had before the <span>pre-click activation
   steps</span> were run. The <span>activation behavior</span> is to
   <span>fire a simple event</span> that bubbles named <code
-  title="event-change">change</code> at the element<!-- It's not
+  title="event-change">change</code> at the element. <!-- It's not
   cancelable. Once this fires, the control is checked, end of story.
-  -->, then <span>broadcast <code
-  title="event-formchange">formchange</code> events</span> from the
-  element's <span>form owner</span>, if any.</p>
+  --></p>
 
   <p><strong>Constraint validation</strong>: If the element is <i
   title="concept-input-required">required</i> and its <span
@@ -48231,11 +48189,9 @@
   the element's <span title="concept-fe-checked">checkedness</span> to
   false. The <span>activation behavior</span> is to <span>fire a
   simple event</span> that bubbles named <code
-  title="event-change">change</code> at the element<!-- It's not
-  cancelable. Once this fires, the control is checked, end of
-  story. -->, then <span>broadcast <code
-  title="event-formchange">formchange</code> events</span> from the
-  element's <span>form owner</span>, if any.</p>
+  title="event-change">change</code> at the element. <!-- It's not
+  cancelable. Once this fires, the control is checked, end of story.
+  -->.</p>
 
   <p><strong>Constraint validation</strong>: If the element is <i
   title="concept-input-required">required</i> and all of the
@@ -49516,7 +49472,8 @@
    password field and this third field.</p>
 
    <pre><h1>Create new account</h1>
-<form action="/newaccount" method=post>
+<form action="/newaccount" method=post
+      oninput="up2.setCustomValidity(up2.value != up.value ? 'Passwords do not match.' : '')">
  <p>
   <label for="username">E-mail address:</label>
   <input id="username" type=email required name=un>
@@ -49525,7 +49482,7 @@
   <input id="password1" type=password required name=up>
  <p>
   <label for="password2">Confirm password:</label>
-  <input id="password2" type=password onforminput="setCustomValidity(value != password1.value ? 'Passwords do not match.' : '')">
+  <input id="password2" type=password name=up2>
  <p>
   <input type=submit value="Create account">
 </form></pre>
@@ -50354,17 +50311,14 @@
   <p>When the <dfn title="event-input-input"><code>input</code></dfn>
   event applies, any time the user causes the element's <span
   title="concept-fe-value">value</span> to change, the user agent must
-  <span>queue a task</span> to first <span>fire a simple event</span>
-  that bubbles named <code title="event-input">input</code> at the
-  <code>input</code> element, and then to <span>broadcast <code
-  title="event-forminput">forminput</code> events</span> from the
-  <code>input</code> element's <span>form owner</span>, if any. User
-  agents may wait for a suitable break in the user's interaction
-  before queuing the task; for example, a user agent could wait for
-  the user to have not hit a key for 100ms, so as to only fire the
-  event when the user pauses, instead of continuously for each
-  keystroke.</p> <!-- same text is present in the <textarea> section
-  -->
+  <span>queue a task</span> to <span>fire a simple event</span> that
+  bubbles named <code title="event-input">input</code> at the
+  <code>input</code> element. User agents may wait for a suitable
+  break in the user's interaction before queuing the task; for
+  example, a user agent could wait for the user to have not hit a key
+  for 100ms, so as to only fire the event when the user pauses,
+  instead of continuously for each keystroke.</p> <!-- same text is
+  present in the <textarea> section -->
 
   <p class="example">Examples of a user changing the element's <span
   title="concept-fe-value">value</span> would include the user typing
@@ -50381,12 +50335,10 @@
   action, then any time the user commits a change to the element's
   <span title="concept-fe-value">value</span> or list of <span
   title="concept-input-type-file-selected">selected files</span>, the
-  user agent must <span>queue a task</span> to first <span>fire a
-  simple event</span> that bubbles named <code
+  user agent must <span>queue a task</span> to <span>fire a simple
+  event</span> that bubbles named <code
   title="event-change">change</code> at the <code>input</code>
-  element, and then to <span>broadcast <code
-  title="event-formchange">formchange</code> events</span> from the
-  <code>input</code> element's <span>form owner</span>, if any.</p>
+  element.</p>
 
   <p class="example">An example of a user interface with a commit
   action would be a <span title="attr-input-type-file">File
@@ -50416,22 +50368,12 @@
    title="event-input">input</code> at the <code>input</code>
    element.</li>
 
-   <li>If the <code title="event-input-input">input</code> event
-   applies, <span>queue a task</span> to <span>broadcast <code
-   title="event-forminput">forminput</code> events</span> from the
-   <code>input</code> element's <span>form owner</span>, if any.</li>
-
    <li>If the <code title="event-input-change">change</code> event
    applies, <span>queue a task</span> to <span>fire a simple
    event</span> that bubbles named <code
    title="event-change">change</code> at the <code>input</code>
    element.</li>
 
-   <li>If the <code title="event-input-change">change</code> event
-   applies, <span>queue a task</span> to <span>broadcast <code
-   title="event-formchange">formchange</code> events</span> from the
-   <code>input</code> element's <span>form owner</span>, if any.</li>
-
   </ol>
 
   <p class="note">In addition, when the <code
@@ -50827,12 +50769,10 @@
   set the <span
   title="concept-option-selectedness">selectedness</span> of the
   picked <code>option</code> element to true and then <span>queue a
-  task</span> to first <span>fire a simple event</span> that bubbles
-  named <code title="event-change">change</code> at the
-  <code>select</code> element, using the <span>user interaction task
-  source</span> as the task source, and then to <span>broadcast <code
-  title="event-formchange">formchange</code> events</span> from the
-  element's <span>form owner</span>.</p>
+  task</span> to <span>fire a simple event</span> that bubbles named
+  <code title="event-change">change</code> at the <code>select</code>
+  element, using the <span>user interaction task source</span> as the
+  task source.</p>
 
   <p>If the <code title="attr-select-multiple">multiple</code>
   attribute is absent, whenever an <code>option</code> element in the
@@ -50861,12 +50801,10 @@
   title="event-click">click</code> event), the user agent must set the
   <span title="concept-option-selectedness">selectedness</span> of
   that <code>option</code> element to false and then <span>queue a
-  task</span> to first <span>fire a simple event</span> that bubbles
-  named <code title="event-change">change</code> at the
-  <code>select</code> element, using the <span>user interaction task
-  source</span> as the task source, and then to <span>broadcast <code
-  title="event-formchange">formchange</code> events</span> from the
-  element's <span>form owner</span>.</p>
+  task</span> to <span>fire a simple event</span> that bubbles named
+  <code title="event-change">change</code> at the <code>select</code>
+  element, using the <span>user interaction task source</span> as the
+  task source.</p>
 
   <p>If the <code title="attr-select-multiple">multiple</code>
   attribute is absent and the element's <span
@@ -50900,12 +50838,10 @@
   before the relevant user interaction event <!-- interaction event
   spec point --> is queued (e.g. before a related <code
   title="event-click">click</code> event), the user agent must
-  <span>queue a task</span> to first <span>fire a simple event</span>
-  that bubbles named <code title="event-change">change</code> at the
+  <span>queue a task</span> to <span>fire a simple event</span> that
+  bubbles named <code title="event-change">change</code> at the
   <code>select</code> element, using the <span>user interaction task
-  source</span> as the task source, and then to <span>broadcast <code
-  title="event-formchange">formchange</code> events</span> from the
-  element's <span>form owner</span>.</p>
+  source</span> as the task source.</p>
 
   <p>The <span title="concept-form-reset-control">reset
   algorithm</span> for <code>select</code> elements is to go through
@@ -51748,17 +51684,15 @@
   title="concept-textarea-raw-value">raw value</span> should be
   editable by the user. Any time the user causes the element's <span
   title="concept-textarea-raw-value">raw value</span> to change, the
-  user agent must <span>queue a task</span> to first <span>fire a
-  simple event</span> that bubbles named <code
+  user agent must <span>queue a task</span> to <span>fire a simple
+  event</span> that bubbles named <code
   title="event-input">input</code> at the <code>textarea</code>
-  element, and then to <span>broadcast <code
-  title="event-forminput">forminput</code> events</span> from the
-  <code>textarea</code> element's <span>form owner</span>. User agents
-  may wait for a suitable break in the user's interaction before
-  queuing the task; for example, a user agent could wait for the user
-  to have not hit a key for 100ms, so as to only fire the event when
-  the user pauses, instead of continuously for each keystroke.</p>
-  <!-- same text is present in the <input> section -->
+  element. User agents may wait for a suitable break in the user's
+  interaction before queuing the task; for example, a user agent could
+  wait for the user to have not hit a key for 100ms, so as to only
+  fire the event when the user pauses, instead of continuously for
+  each keystroke.</p> <!-- same text is present in the <input> section
+  -->
 
   <p>A <code>textarea</code> element has a <dfn
   title="concept-textarea-dirty">dirty value flag</dfn>, which must be
@@ -51796,13 +51730,10 @@
    title="attr-dir-rtl">rtl</code>" if the user selected a
    right-to-left writing direction.</p></li>
 
-   <li><p><span>Queue a task</span> to first <span>fire a simple
+   <li><p><span>Queue a task</span> to <span>fire a simple
    event</span> that bubbles named <code
    title="event-input">input</code> at the <code>textarea</code>
-   element, and to then <span>broadcast <code
-   title="event-forminput">forminput</code> events</span> from the
-   <code>textarea</code> element's <span>form owner</span>, if
-   any.</p></li>
+   element.</p></li>
 
   </ol>
 
@@ -52637,10 +52568,10 @@
    <p>A simple calculator could use <code>output</code> for its
    display of calculated results:</p>
 
-   <pre><form onsubmit="return false">
+   <pre><form onsubmit="return false" oninput="o.value = a.valueAsNumber + b.valueAsNumber">
  <input name=a type=number step=any> +
  <input name=b type=number step=any> =
- <output onforminput="value = a.valueAsNumber + b.valueAsNumber"></output>
+ <output name=o></output>
 </form></pre>
 
   </div>
@@ -55564,8 +55495,6 @@
   invoke the <span title="concept-form-reset-control">reset
   algorithm</span> of each <span title="category-reset">resettable
   element</span> whose <span>form owner</span> is <var
-  title="">form</var>, and <span>broadcast <code
-  title="event-formchange">formchange</code> events</span> from <var
   title="">form</var>.</p>
 
   <p>Each <span title="category-reset">resettable element</span>
@@ -55579,40 +55508,6 @@
 
 
 
-  <div class="impl">
-
-  <h4>Event dispatch</h4>
-
-  <p>When the user agent is to <dfn>broadcast <code
-  title="event-forminput">forminput</code> events</dfn> or
-  <dfn>broadcast <code title="event-formchange">formchange</code>
-  events</dfn> from a <code>form</code> element <var
-  title="">form</var>, it must run the following steps:</p>
-
-  <ol>
-
-   <li><p>Let <var title="">controls</var> be a list of all the <span
-   title="category-reset">resettable elements</span> whose <span>form
-   owner</span> is <var title="">form</var>.</p></li>
-
-   <li>If the user agent was to <span>broadcast <code
-   title="event-forminput">forminput</code> events</span>, let <var
-   title="">event name</var> be <code
-   title="event-forminput">forminput</code>. Otherwise the user agent
-   was to <span>broadcast <code
-   title="event-formchange">formchange</code> events</span>; let <var
-   title="">event name</var> be <code
-   title="event-formchange">formchange</code>.</li>
-
-   <li><p>For each element in <var title="">controls</var>, in
-   <span>tree order</span>, <span>fire a simple event</span> named
-   <var title="">event name</var> at the element.</p></li>
-
-  </ol>
-
-  </div>
-
-
   <h3 id="interactive-elements">Interactive elements</h3>
 
   <h4>The <dfn><code>details</code></dfn> element</h4>
@@ -66413,8 +66308,6 @@
            attribute <span>Function</span> <span title="handler-onended">onended</span>;
            attribute <span>Function</span> <span title="handler-window-onerror">onerror</span>;
            attribute <span>Function</span> <span title="handler-window-onfocus">onfocus</span>;
-           attribute <span>Function</span> <span title="handler-onformchange">onformchange</span>;
-           attribute <span>Function</span> <span title="handler-onforminput">onforminput</span>;
            attribute <span>Function</span> <span title="handler-window-onhashchange">onhashchange</span>;
            attribute <span>Function</span> <span title="handler-oninput">oninput</span>;
            attribute <span>Function</span> <span title="handler-oninvalid">oninvalid</span>;
@@ -74125,8 +74018,6 @@
     <tr><td><dfn title="handler-ondurationchange"><code>ondurationchange</code></dfn> <td> <code title="event-media-durationchange">durationchange</code>
     <tr><td><dfn title="handler-onemptied"><code>onemptied</code></dfn> <td> <code title="event-media-emptied">emptied</code>
     <tr><td><dfn title="handler-onended"><code>onended</code></dfn> <td> <code title="event-media-ended">ended</code>
-    <tr><td><dfn title="handler-onformchange"><code>onformchange</code></dfn> <td> <code title="event-formchange">formchange</code>
-    <tr><td><dfn title="handler-onforminput"><code>onforminput</code></dfn> <td> <code title="event-forminput">forminput</code>
     <tr><td><dfn title="handler-oninput"><code>oninput</code></dfn> <td> <code title="event-input">input</code>
     <tr><td><dfn title="handler-oninvalid"><code>oninvalid</code></dfn> <td> <code title="event-invalid">invalid</code>
     <tr><td><dfn title="handler-onkeydown"><code>onkeydown</code></dfn> <td> <code title="event-keydown">keydown</code> <!-- widely used -->
@@ -76421,9 +76312,7 @@
    title="concept-input-type-file-selected">selected files</span>
    while the control was focused without committing that change, then
    <span>fire a simple event</span> that bubbles named <code
-   title="event-change">change</code> at the element, then
-   <span>broadcast <code title="event-formchange">formchange</code>
-   events</span> at the element's <span>form owner</span>.</p>
+   title="event-change">change</code> at the element.</p>
 
    <li><p>Unfocus the element.</p></li>
 
@@ -105960,18 +105849,6 @@
      <td> <span title="event handler content attributes">Event handler content attribute</span>
 
     <tr>
-     <th id="ix-handler-onformchange"> <code title="">onformchange</code>
-     <td> <span title="handler-onformchange">HTML elements</span>
-     <td> <code title="event-formchange">formchange</code> event handler
-     <td> <span title="event handler content attributes">Event handler content attribute</span>
-
-    <tr>
-     <th id="ix-handler-onforminput"> <code title="">onforminput</code>
-     <td> <span title="handler-onforminput">HTML elements</span>
-     <td> <code title="event-forminput">forminput</code> event handler
-     <td> <span title="event handler content attributes">Event handler content attribute</span>
-
-    <tr>
      <th id="ix-handler-window-onhashchange"> <code title="">onhashchange</code>
      <td> <code title="handler-window-onhashchange">body</code>
      <td> <code title="event-hashchange">hashchange</code> event handler for <code>Window</code> object
@@ -106784,16 +106661,6 @@
      <td> Fired at nodes gaining focus
 
     <tr>
-     <td> <code title="event-formchange">formchange</code>
-     <td> <code>Event</code>
-     <td> Fired at form controls when the user commits a value change to a control on the form
-
-    <tr>
-     <td> <code title="event-forminput">forminput</code>
-     <td> <code>Event</code>
-     <td> Fired at form controls when the user changes the value of a control on the form
-
-    <tr>
      <td> <code title="event-hashchange">hashchange</code>
      <td> <code>HashChangeEvent</code>
      <td> Fired at the <code>Window</code> when the fragment identifier part of <span>the document's current address</span> changes




More information about the Commit-Watchers mailing list