编辑:
请阅读:嵌套的 html FORM 无法访问 - 多表单问题
该答案表明表单元素不能包含其他表单元素,因此即使它可以在浏览器上运行并不意味着您应该使用这种技术。尝试将其全部放入一种形式,如下所示:
<form action="register.php" method="POST" enctype="multipart/formdata">
<input name="username" type="text" />
<input name="password" type="password" />
<input name="avitar" type="file" />
<input name="image" type="submit" value="Upload" />
<input name="register" type="submit" value="Register" />
</form>
或者更好的是,使用 jQuery/AJAX 在不离开页面的情况下上传 avitar。
原始答案:
您可以使用一些 javascript 解决此问题。这是一个快速的、未经测试的示例:
<head>
<script>
var submitted = false;
function canSubmit() {
if(submitted) return false;
submitted = true;
return true;
}
</script>
</head>
<body>
<form action="register.php" method="POST" onsubmit="return canSubmit();">
<input name="username" type="text" />
<input name="password" type="password" />
<form action="upload.php" method="POST" onsubmit="return canSubmit();" enctype="multipart/formdata">
<input name="avatar" type="file" />
<input type="submit" value="Upload" />
</form>
<input type="submit" value="Register" />
</form>
</body>
另一种方法是只为表单提供相同的操作,并为提交按钮命名,这样您就可以知道哪个提交了。这仅适用于用户单击提交按钮并且在选择其中一个文本框时不只是按 Enter 键,但对于文件上传表单,用户必须单击提交按钮。