Question about mis-nested form controls and parsing

Consider the following HTML document:

<form method="GET">
   <table>
     <tr><td><input type="text" name="one" value="one"></td></tr>
     <input type="hidden" name="two" value="two">
   </table>
</form>

When parsed using the algorithm in HTML5 section 8.2.4.3.7, the DOM this creates is:

   FORM
    INPUT type=hidden
    TABLE
     TBODY
      TR
       TD
        INPUT type=text

and then http://www.whatwg.org/specs/web-forms/current-work/#elements says that 
the hidden input comes first in form.elements and 
http://www.whatwg.org/specs/web-forms/current-work/#form-submission says that 
the submitted query string needs to be "one=one&two=two".

Unfortunately, doing that breaks sites, as we (Mozilla) discovered when we 
actually started doing the document order thing.  See 
<https://bugzilla.mozilla.org/show_bug.cgi?id=390565>.

What we are considering doing right now is allowing <input type="hidden"> (but 
not other kinds of inputs) to be direct children of TABLE, TBODY, and TR.  That 
seems to address at least the site in question.  Hopefully, the number of sites 
that put non-hidden inputs in a place where they get shipped out from the table 
_and_ depend on submission order being the same as source order is small.... But 
then again, I'd banked that the number of sites which do the malformed content 
above and depend on submission order is small too, and we found one pretty 
quickly.  :(

Thoughts?

-Boris

Received on Monday, 3 September 2007 03:09:02 UTC