表格里面的表格,那好吗?

时间:2010-08-07 11:21:07

标签: html html5 forms

我们是否可以在另一个表单中使用表单?这有什么问题。

9 个答案:

答案 0 :(得分:207)

虽然您可以在一个HTML页面中包含多个<form>元素,但您无法嵌套它们。

答案 1 :(得分:91)

使用新的HTML5输入元素的表单属性可以实现表单嵌套。虽然我们没有在结构上嵌套表单,但是输入会以它们自己的形式进行评估。在我的测试中,除了IE(IE11)之外,3个主流浏览器都支持此功能。表单嵌套限制是HTML UI设计的一大障碍。

以下是示例代码,当您点击“保存”按钮时,您会看到“2 3成功”(原始http://www.impressivewebs.com/html5-form-attribute/):

<form id="saveForm" action="/post/dispatch/save" method="post"></form>
<form id="deleteForm" action="/post/dispatch/delete" method="post"></form>

<div id="toolbar">
    <input type="text" name="foo" form="saveForm" />
    <input type="hidden" value="some_id" form="deleteForm" />
    <input type="text" name="foo2" id="foo2" form="saveForm" value="success" />

    <input type="submit" name="save" value="Save" form="saveForm" onclick="alert(document.getElementById('deleteForm').elements.length + ' ' + document.getElementById('saveForm').elements.length + ' ' + document.getElementById('saveForm').elements['foo2'].value);return false;" />
    <input type="submit" name="delete" value="Delete" form="deleteForm" />
    <a href="/home/index">Cancel</a>
</div>

答案 2 :(得分:75)

没有。 HTML明确禁止嵌套表单。

来自HTML 5 draft

  

内容模型:      流内容,但没有表单元素后代。

来自HTML 4.01 Recommendation

  

<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form -->

(注意 - (FORM)部分)。

答案 3 :(得分:9)

不支持嵌套表单,也不是w3c标准的一部分(正如你们许多人所说的那样)。

然而,HTML5增加了对输入的支持,这些输入不必是任何形式的后代,但可以通过使用“form”属性以多种形式提交。这并不完全允许嵌套表单,但通过使用此方法,您可以模拟嵌套表单。

“form”属性的值必须是表单的id,或者在多个表单的情况下,单独的表单id与空格。

您可以阅读更多here

答案 4 :(得分:8)

如果您有一个主表格,并被迫拥有一个“带表格的表格”以下是您可以做的...在我的情况下,我在globalHeader中有一个链接,我想在它发布时发表一个帖子点:

带链接按钮提交的示例帖子:

而不是表单...将您的输入包装在div中:

 <div id="gap_form"><input type="hidden" name="PostVar"/><a id="myLink" href="javascript:Form2.submit()">A Link</a></div>

js file:

$(document).ready(function () {
(function () {
    $('#gap_form').wrap('<form id="Form2" action="http://sitetopostto.com/postpage" method="post" target="_blank"></form>');
})();});

这会将表格内的div“gap_form”内的所有内容包装起来,并且链接将提交该表单。我现在在页面上有这个确切的例子......(在我的例子中......你可以通过重定向到新页面并在该页面上提交表单来完成同样的事情......但我更喜欢这样做)

答案 5 :(得分:4)

是的。这是错误的。它不会起作用,因为它是错误的。大多数浏览器只会看到一个表单。

http://www.w3.org/MarkUp/html3/forms.html

答案 6 :(得分:4)

另一种解决方法是启动包含其自己的表单的模态窗口

答案 7 :(得分:3)

XHTML无法使用嵌套表单。但是,您可以使用多个提交按钮并使用服务器端脚本根据用户单击的按钮运行不同的代码。

答案 8 :(得分:3)

不,我们不能在其他表单中嵌套表单

<form name='form1'>
      <form name='form2'>
            //some code here
      </form>
</form>

它在某些情况下会起作用,但不建议用于通用平台。您可以在单个表单中使用大量的SUBMIT按钮,但无法正确管理嵌套表单。