HTML为什么不允许嵌套表格?

时间:2018-11-29 14:15:08

标签: html

我在发布之前在网站上进行了搜索,所以我希望这不是重复的内容,但这是一个困扰我的问题。

为什么HTML不允许嵌套形式(没有JS)?我已经看到它不允许允许嵌套表格,但从来没有为什么不允许它们。对我来说,为什么不允许使用它们是没有意义的,尤其是如果每种形式都路由到两个不同的动作时。为什么会这样?

3 个答案:

答案 0 :(得分:2)

HTML并不是所有嵌套的表单,因为它们会引起更多的问题,而无法解决。

HTML表单是为单个HTTP请求构建的。如果您提交父表单,是否应该将子表单作为父表单中的字段提交给父操作?还是应该将子字段也提交给子操作?您如何处理对这两个请求的响应?您呈现哪个回应?如果父母提交失败而孩子成功,该怎么办?您如何在响应标记中处理此问题?

所有这些答案都是通过脚本而不是标记来处理的。

如果在父表单中需要这些字段,则应将其作为表单的一种封装形式,作为表示单个请求所需数据的单一封装方式。任何嵌套形式都是其自己的请求,因此应封装成这种形式。

答案 1 :(得分:1)

其背后的原因是因为<form>标记期望指定事件动作,而在另一种形式中包含一种形式只会引起问题,因为每种形式都期望发生不同的事件,这可能导致意外的结果。提交按钮,因为它们触发的默认事件是您在表单操作中指定的任何事件。

有人说,您可以在一个页面上有多个<form>标签,只是没有嵌套。

编辑 您还可以在以下表单元素上阅读W3C文档:https://www.w3.org/MarkUp/html3/forms.html

它说的第一句话是:**

  

请注意,您不允许嵌套FORM元素!

**

答案 2 :(得分:0)

我能理解为什么这样似乎可行...

通常考虑一下HTML代码;您打开UPDATE officiantsDetails offd JOIN (SELECT renewDate, officiant_id FROM officiantsRenewals ORDER BY renewDate DESC LIMIT 1 ) offr ON offd.officiant_id = offr.officiant_id SET offd.membershipRenewDate = offr.renewDate; ,然后关闭<tag>。大多数标签可以包含多个其他标签,对吗?标头标签包含</tag><title>等标签,而<meta data>标签将一堆东西包装在一起,然后再看到<body>标签。有些标签有不同的规则;就像</body>标签一样。 <img>标签属于带有“不同规则”的那些标签之一。

<form>实际上是脚本的一部分。它在HTML页面上显示给您的站点访问者,作为收集信息的一种方式。网站访问者点击提交按钮后,<form>会将信息发送到其相关脚本进行处理。所有<form>标签,无论它们是<form>值,<input>还是<checkboxes>字段,都捆绑在开始和结束<password>标签之间。

每个</form>会将信息发送到单独的脚本。因此,用于登录用户的脚本将需要一个<form></form>,而允许用户更改其密码的脚本将是另一个<form></form>。如果您希望脚本同时处理这两个选项,则必须对脚本进行编码以处理所有这些信息。

总之,<form></form>无法嵌套,因为它们用作用户界面来收集将由存储在您网站服务器上的脚本处理的信息。