在另一个 html 表单中包含一个 html 表单是否有效?

新手上路,请多包涵

具有以下内容的 html 是否有效:

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

因此,当您提交“b”时,您只会获得内部表单中的字段。当您提交“a”时,您将获得减去“b”中的所有字段。

如果不可能,有什么解决方法可以解决这种情况?

原文由 FlyByQuestionGuy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 278
2 个回答

A. 它不是有效的 HTML 或 XHTML

在官方 W3C XHTML 规范的 B 节“元素禁止”中指出:

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

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

至于旧的 HTML 3.2 规范,关于 FORMS 元素的部分指出:

“每个表单都必须包含在一个 FORM 元素中。一个文档中可以有多个表单,但不能嵌套 FORM 元素。”

B. 解决方法

有使用 JavaScript 的变通方法,无需嵌套表单标签。

“如何创建嵌套表单。” (尽管标题这 不是 嵌套的表单标签,而是一种 JavaScript 解决方法)。

这个 StackOverflow 问题的答案

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

原文由 GeneQ 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果有人发现这篇文章是一个不需要 JS 的好解决方案。使用两个具有不同名称属性的提交按钮检查您的服务器语言按下了哪个提交按钮,因为只有其中一个将被发送到服务器。

 <form method="post" action="ServerFileToExecute.php">
    <input type="submit" name="save" value="Click here to save" />
    <input type="submit" name="delete" value="Click here to delete" />
</form>

如果您使用 php,服务器端可能看起来像这样:

 <?php
    if(isset($_POST['save']))
        echo "Stored!";
    else if(isset($_POST['delete']))
        echo "Deleted!";
    else
        echo "Action is missing!";
?>

原文由 Andreas 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题