以下是有效的html:
<form action="a">
<input.../>
<form action="b">
<input.../>
<input.../>
<input.../>
</form>
<input.../>
</form>
当你提交b时,你只能得到内部表单中的字段。当你提交“a”时,你会得到所有字段减去“b”内的字段。
如果不可能,对于这种情况有什么可行的变通办法?
以下是有效的html:
<form action="a">
<input.../>
<form action="b">
<input.../>
<input.../>
<input.../>
</form>
<input.../>
</form>
当你提交b时,你只能得到内部表单中的字段。当你提交“a”时,你会得到所有字段减去“b”内的字段。
如果不可能,对于这种情况有什么可行的变通办法?
当前回答
如果有人发现这篇文章是一个不需要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!";
?>
其他回答
不,HTML规范规定任何FORM元素都不应该包含另一个FORM元素。
作为解决方案,你可以在提交按钮上使用formaction属性。输入时用不同的名字。
<form action="a">
<input.../>
<!-- Form 2 inputs -->
<input.../>
<input.../>
<input.../>
<input type="submit" formaction="b">
</form>
<input.../>
嵌套表单标签的非javascript解决方案:
因为你考虑到了
所有字段减去“b”以内的字段。
当提交"a"时,以下将工作,使用常规的web表单而没有花哨的JavaScript技巧:
步骤1。把每个表单放在自己的网页上。
步骤2。在您希望此子表单出现的任何位置插入iframe。
步骤3。利润。
我尝试使用一个代码游乐场网站来展示演示,但许多网站禁止在iframe中嵌入网站,即使是在他们自己的域内。
不, 看到w3c
如果你需要你的表单向1:M关系数据库提交/提交数据,我建议在表a上创建一个“插入后”DB触发器,它将为表B插入必要的数据。