窗体里面的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。
这不是有效的XHTML必须有嵌套的forms。 但是,您可以使用多个提交button,并使用服务器端脚本来运行不同的代码,具体取决于用户点击了哪个button。
另一个解决方法是启动一个包含自己窗体的模态窗口
不,我们不能像这样在另一个表格中嵌套表单
<form name='form1'> <form name='form2'> //some code here </form> </form>
它会在某些情况下工作,但不推荐用于通用平台。 您可以在一个表单中使用大量的SUBMITbutton,但不能适当地pipe理嵌套表单。