以下是有效的html:

<form action="a">
    <input.../>
    <form action="b">
        <input.../>
        <input.../>
        <input.../>
    </form>
    <input.../>
</form>

当你提交b时,你只能得到内部表单中的字段。当你提交“a”时,你会得到所有字段减去“b”内的字段。

如果不可能,对于这种情况有什么可行的变通办法?


当前回答

正如其他人所说,它不是有效的HTML。

听起来你这样做是为了在视觉上定位彼此之间的形式。如果是这种情况,只需做两个单独的表单,并使用CSS来定位它们。

其他回答

答:它不是有效的HTML或XHTML

在官方W3C XHTML规范的B节中。“元素禁令”规定:

"表单不能包含其他表单元素。"

http://www.w3.org/TR/xhtml1/#prohibitions

对于旧的HTML 3.2规范, 关于FORMS元素的部分声明:

"每一份表格都必须用 表单元素。可以有几个 表单放在单个文档中,但是 FORM元素不能嵌套。

B.解决方案

有一些使用JavaScript而不需要嵌套表单标记的变通方法。

“如何创建嵌套表单。”(尽管title不是嵌套的表单标签,而是JavaScript的解决方案)。

这是StackOverflow问题的答案

注意:尽管可以通过脚本操纵DOM来欺骗W3C验证器来传递页面,但它仍然不是合法的HTML。使用这种方法的问题是,现在无法保证跨浏览器的代码行为。(因为不是标准)

嵌套表单标签的非javascript解决方案:

因为你考虑到了

所有字段减去“b”以内的字段。

当提交"a"时,以下将工作,使用常规的web表单而没有花哨的JavaScript技巧:

步骤1。把每个表单放在自己的网页上。

步骤2。在您希望此子表单出现的任何位置插入iframe。

步骤3。利润。

我尝试使用一个代码游乐场网站来展示演示,但许多网站禁止在iframe中嵌入网站,即使是在他们自己的域内。

正如其他人所说,它不是有效的HTML。

听起来你这样做是为了在视觉上定位彼此之间的形式。如果是这种情况,只需做两个单独的表单,并使用CSS来定位它们。

如果你需要你的表单向1:M关系数据库提交/提交数据,我建议在表a上创建一个“插入后”DB触发器,它将为表B插入必要的数据。

通过将HTML代码输入W3 Validator,您可以非常容易地回答自己的问题。(它有一个文本输入域,你甚至不需要把你的代码放在服务器上…)

(不,它不会生效。)