【问题标题】:Why WHATWG disallows nested forms in HTML 4 and HTML5?为什么 WHATWG 在 HTML 4 和 HTML5 中不允许嵌套表单?
【发布时间】:2010-05-13 15:15:45
【问题描述】:

为什么 WHATWG 在 HTML 4 和 HTML5 中不允许嵌套表单?

编辑: 问题最初描述于How do you overcome the HTML form nesting limitation?

简而言之,作者说: 您正在制作一个博客应用程序,并且您有一个包含一些用于创建新帖子的字段的表单和一个带有“操作”的工具栏,例如 “保存”“删除”、“取消”... 唯一的问题是按下“删除”,将提交服务器上的所有表单字段,即使此操作唯一需要的是带有 post-id 的隐藏输入。

所以,这是一个关于表单中的多个按钮提交不同的输入字段集(就像几个表单可以允许的那样)的优雅解决方案(不使用 JavaScript)的问题strong> 从用户角度将 UI 排列成单个实体(“表单”)。

该讨论的评论:几乎不可能将元素的屏幕位置与其在文档中的位置完全分开。

编辑:我发现了有趣的注释https://web.archive.org/web/20170420110433/http://anderwald.info/internet/nesting-form-tags-in-xhtml/ - (X)HTML 不允许嵌套表单,如“form > form”,但允许“form > fieldset > form”,W3 验证器说它是有效,但浏览器存在这种嵌套的错误。

【问题讨论】:

  • 你不能责怪 HTML4 的 WHATWG,它甚至在编写 HTML4 时都不存在。
  • 在您的博客应用示例中,我个人会创建两个
    元素,基本上是为您的删除按钮提供它自己的
    。当 HTML4/5 允许多个表单时,我真的看不到嵌套表单的需要。

标签: webforms html


【解决方案1】:

就 HTML5(草案规范)而言,情况并不像 David Dorward 所说的那么明确。事实是,没有办法在 text/html 序列化中以向后兼容的方式指定嵌套表单,而无需在标记中添加新的分隔表单的方式。

另一方面,在 application/xhtml+xml 序列化中,不仅可以标记嵌套表单,而且 HTML5 会花费一些长度(http://dev.w3.org/html5/spec/forms.html#form-owner)来指定在这种情况下应该发生什么。此外,对最新版本的 FireFox、Opera、Chrome 和 Safari 以及 IE9 平台预览的快速测试表明它们都符合 HTML5 的规定。

因此,它在 HTML5 内容模型中可能有效,但事实并非如此。什么决定什么是有效的,什么是无效的,很大程度上取决于用例。到目前为止,还没有人向 WHATWG 或 W3C HTML WG 提供足够引人注目的用例来使嵌套表单成为有效 HTML5 的一部分。

【讨论】:

  • 我编辑了问题并添加了一个指向用例的链接...您认为它是一个足够引人注目的用例吗?
  • 来自HTML5的表单属性(表单所有者)似乎解决了这个问题,很酷,谢谢!
【解决方案2】:

WHATWG 不允许 HTML 4 中的嵌套表单——它们与语言无关,而且它们与 HTML 5 的关系也没有你想象的那么大。

不允许使用嵌套表单,因为它们没有意义,而且如果您指定的内容有些模糊,则它不会向后兼容当前的浏览器。

【讨论】:

  • 但是stackoverflow.com/questions/597596/… 对我来说确实有意义。
  • WHATWG 与 HTML5 没有多大关系?哇,大错特错了。试试这个@Quentin:转到 WHATWG 上的 HTML 规范。提交评论。知道它去哪儿了吗? W3C 的站点,作为一个错误,由 W3C 编辑解决。难怪你被降级了。这些小组正在共同开发 HTML5。
  • @james.garriss — 我说的是“正如你所想的那样”,而不是“一点也不”。他们做出贡献,他们不会自己做出最终决定。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-05
  • 1970-01-01
相关资源
最近更新 更多