嵌套表单在HTML5中是否有效?

时间:2014-10-23 20:30:18

标签: html5 forms

嵌套表格可以接受吗?

我无法在HTML5 doc中找到有关嵌套表单的任何内容。我确定它列在某个页面上某个地方(可能是更改日志),但如果没有,我应该假设没有提及是否可以接受?

此外,HTML4 doc并未提及。 也许它一直被允许,我坚持旧标准。<​​/ em>

以前的提及

XHTML1.0

  

表单不得包含其他表单元素。

HTML 3.0

  

单个文档中可以有多个表单,但FORM元素不能嵌套。

2 个答案:

答案 0 :(得分:32)

HTML5文档确实在the section you link above中提到了它:

  

内容模型

     

流内容,但没有表单元素后代。

“内容模型”表示“此元素可能包含的内容”。所以不,不允许嵌套表格。

答案 1 :(得分:4)

如果他们得到支持,那么这样的事情就可以了:

&#13;
&#13;
$('button').on('click', function(e) {
    var form = $(this).parents('form');
    e.preventDefault();
    if(!form) {
        form = $(this);
    }
    $('#output').val('from '+form.attr('id')+'\n'+form.serialize());
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form id='parent'>
    <form id='childA'>
        <input type='text' placeholder='value of A'/>
    <button>Send part A</button>
</form>
    <form id='childB'>
        <input type='text' placeholder='value of B'/>
    <button>Send part B</button>
</form>
    <button>Send All</button>
</form>
<br/>
<textarea id='output'></textarea>
&#13;
&#13;
&#13;

但是,由于它没有得到官方支持,您可以看一下浏览器是否正在阻止它(关闭它假设的是开放式form元素)。一种替代方法是使用单个form但将data属性添加到各个输入,以便JavaScript可以收集所需的子字段并从中手动构建POST