是否可以像这样嵌套html表单
<form name="mainForm">
<form name="subForm">
</form>
</form>
两种形式都适用吗?我的朋友有这个问题,subForm的一部分工作,而另一部分不工作。
是否可以像这样嵌套html表单
<form name="mainForm">
<form name="subForm">
</form>
</form>
两种形式都适用吗?我的朋友有这个问题,subForm的一部分工作,而另一部分不工作。
当前回答
不,你不能有嵌套的表单。相反,您可以打开一个包含表单的Modal并执行Ajax表单提交。
其他回答
真的不可能…… 我不能嵌套表单标签… 但是我使用了下面的代码:
<form>
OTHER FORM STUFF
<div novalidate role="form" method="post" id="fake_form_id_0" data-url="YOUR_POST_URL">
THIS FORM STUFF
</div>
</form>
{% csrf_token %}之类的
并应用了一些JS
var url = $(form_id).attr("data-url");
$.ajax({
url: url,
"type": "POST",
"data": {
'csrfmiddlewaretoken': '{{ csrf_token }}',
'custom-param-attachment': 'value'
},
success: function (e, data) {
if (e.is_valid) {
DO STUFF
}
}
});
总之,没有。一个页面中可以有多个表单,但它们不应该嵌套。
来自html5工作草案:
4.10.3 form元素 内容模型: 流内容,但没有表单元素后代。
如果你使用的是AngularJS,你的ng-app中的任何<form>标签都会在运行时被ngForm指令替换掉,这些指令被设计成嵌套的。
在Angular中表单是可以嵌套的。这意味着当所有子表单都有效时,外部表单也是有效的。然而,浏览器不允许嵌套<form>元素,所以Angular提供了ngForm指令,它的行为与<form>相同,但可以嵌套。这允许你拥有嵌套表单,这在用ngRepeat指令动态生成的表单中使用Angular验证指令时非常有用。(源)
在嵌套表单之前使用空表单标签
在Firefox, Chrome上测试和工作
未测试I.E.
<form name="mainForm" action="mainAction">
<form></form>
<form name="subForm" action="subAction">
</form>
</form>
EDIT by @adusza:正如评论者指出的那样,上面的代码不会产生嵌套表单。然而,如果你像下面这样添加div元素,你将在mainForm中有subForm,并且第一个空白表单将被删除。
<form name="mainForm" action="mainAction">
<div>
<form></form>
<form name="subForm" action="subAction">
</form>
</div>
</form>
你也可以在按钮标签内使用formaction=""。
<button type="submit" formaction="/rmDog" method='post' id="rmDog">-</button>
这将作为一个单独的按钮嵌套在原始表单中。