为什么';HTML不允许嵌套表单吗?

为什么';HTML不允许嵌套表单吗?,html,Html,我在发布之前在网站上搜索过,所以我希望这不是重复的,但这一直是一个困扰我的问题 为什么HTML不允许嵌套表单(没有JS)?我见过它不允许嵌套表单,但从来没有见过为什么不允许嵌套表单。对我来说,它们为什么不被允许是没有道理的,特别是如果每个表单路由到两个不同的操作。这是为什么呢?HTML不支持所有嵌套表单,因为它们会导致比解决问题更多的问题 HTML中的表单是为单个HTTP请求构建的。如果提交父窗体,是否应将子窗体作为父窗体中的字段提交给父操作?或者子字段也应该提交给子操作?您如何处理这两个请求的

我在发布之前在网站上搜索过,所以我希望这不是重复的,但这一直是一个困扰我的问题


为什么HTML不允许嵌套表单(没有JS)?我见过它不允许嵌套表单,但从来没有见过为什么不允许嵌套表单。对我来说,它们为什么不被允许是没有道理的,特别是如果每个表单路由到两个不同的操作。这是为什么呢?

HTML不支持所有嵌套表单,因为它们会导致比解决问题更多的问题

HTML中的表单是为单个HTTP请求构建的。如果提交父窗体,是否应将子窗体作为父窗体中的字段提交给父操作?或者子字段也应该提交给子操作?您如何处理这两个请求的响应?你会做出什么反应?如果父提交失败而子提交成功怎么办?如何在响应标记中处理此问题

这些答案中的任何一个都是用脚本而不是标记来处理的


如果父窗体中需要这些字段,则应将其作为单个封装方式的一部分,以表示单个请求所需的数据。任何嵌套表单都是它自己的请求,因此应该进行封装。

HTML并不都是嵌套表单,因为它们会导致比解决问题更多的问题

HTML中的表单是为单个HTTP请求构建的。如果提交父窗体,是否应将子窗体作为父窗体中的字段提交给父操作?或者子字段也应该提交给子操作?您如何处理这两个请求的响应?你会做出什么反应?如果父提交失败而子提交成功怎么办?如何在响应标记中处理此问题

这些答案中的任何一个都是用脚本而不是标记来处理的


如果父窗体中需要这些字段,则应将其作为单个封装方式的一部分,以表示单个请求所需的数据。任何嵌套表单都是它自己的请求,应该被封装成这样。

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

也就是说,一个页面上可以有多个
标记,只是不能嵌套

编辑 您还可以在此处阅读有关表单元素的W3C文档:

它首先说的是:**

注意:不允许嵌套表单元素


**

这背后的原因是,
标记期望指定一个事件操作,并且在另一个表单中包含一个表单只会导致问题,因为每个表单期望发生不同的事件,这可能会导致提交按钮的意外结果,因为它们的默认触发事件是任何事件已在窗体操作中指定

也就是说,一个页面上可以有多个
标记,只是不能嵌套

编辑 您还可以在此处阅读有关表单元素的W3C文档:

它首先说的是:**

注意:不允许嵌套表单元素


**

我能理解为什么这可能会奏效

一般考虑HTML代码;打开一个
,然后关闭
。大多数标记可以包含多个其他标记,对吗?页眉标记包含
等的标记,
标记在看到
标记之前将一大堆内容包装在一起。有些标签有不同的规则;就像独立的
标记一样。
标记属于具有“不同规则”的标记之一

实际上是脚本的一部分。它在HTML页面上呈现给站点访问者,作为收集信息的一种手段。站点访问者单击submit按钮后,
会将信息发送到相关脚本进行处理。所有的
标记,无论是
值、
还是
字段,都捆绑在开始和结束
标记之间

每个
将信息发送到单独的脚本。因此,让用户登录的脚本需要一个
,而允许用户更改密码的脚本则需要另一个
。如果希望脚本处理这两个选项,则必须编写脚本代码来处理所有这些信息


总之,
不能嵌套,因为它们的功能是作为用户界面来收集信息,这些信息将由存储在网站服务器上的脚本处理。

我可以理解为什么这样做可能有效

一般考虑HTML代码;打开一个
,然后关闭
。大多数标记可以包含多个其他标记,对吗?页眉标记包含
等的标记,
标记在看到
标记之前将一大堆内容包装在一起。有些标签有不同的规则;就像独立的
标记一样。
标记属于具有“不同规则”的标记之一

实际上是脚本的一部分。它在HTML页面上呈现给站点访问者,作为收集信息的一种手段。站点访问者单击submit按钮后,
会将信息发送到相关脚本进行处理。所有的
标记,无论是
值、
还是
字段,都捆绑在开始和结束
标记之间

每个
发送inf