窗体里面的forms,好吗?

我们是否可以在另一个表格里面有一个表格? 这有什么问题吗?

虽然在一个HTML页面中可以有多个<form>元素,但是不能将它们嵌套在一起。

不,HTML明确禁止嵌套的表单。

从HTML 5草案 :

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

从HTML 4.01build议 :

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

(请注意 – (FORM)部分)。

表单嵌套可以通过新的HTML5input元素的表单属性来实现。 尽pipe我们没有在结构上嵌套forms,但投入是按照自己的forms进行评估的。 在我的testing中,除了IE(IE11)以外,3个主stream浏览器都支持这个。 表单嵌套限制是HTML UIdevise的一大障碍。

这里是一个示例代码,当你点击保存button,你应该看到“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> 

如果你有一个主表单,并且被迫有一个“带有表单的表单”,那么你可以这样做…在我的情况下,我在globalHeader中有一个链接,我想在点击时发表一个post:

带链接button提交的示例表单post:

而不是一个窗体…包装你的input在一个div:

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

js文件:

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

这将在一个表单中dynamic地将所有内容包裹在div“gap_form”中,链接将提交该表单。 我现在有一个确切的例子在一个页面上工作…(在我的例子中…你可以通过redirect到一个新的页面并提交该页面上的表单来完成同样的事情…但是我更喜欢这个)

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

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

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

你可以在这里阅读更多

就在这里。 这是错误的。 它不会工作,因为它是错误的。 大多数浏览器只能看到一种forms。

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

这不是有效的XHTML必须有嵌套的forms。 但是,您可以使用多个提交button,并使用服务器端脚本来运行不同的代码,具体取决于用户点击了哪个button。

另一个解决方法是启动一个包含自己窗体的模态窗口

不,我们不能像这样在另一个表格中嵌套表单

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

它会在某些情况下工作,但不推荐用于通用平台。 您可以在一个表单中使用大量的SUBMITbutton,但不能适当地pipe理嵌套表单。