所以我想做的是,有一个表单显示在加载中,它要求用户提供他们的详细信息,如名称等,然后一旦用户点击提交,我希望这些信息传递到下一个表单,我知道我必须隐藏字段。
我想要另一个表单显示后,他们点击提交,这一切都必须使用POSTBACK,所以几乎有2个表单在一个php页面,但只显示第一个已提交后的第二个。
我知道我可以通过创建两个不同的php文件和使用头来做到这一点,但我想学习如何通过回发做到这一点。
<form name="firstform" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?> " onSubmit="return validator();">
<p>Please fill in the following form</p>
<p>Given Name* <input type="text" name="fname" id="fname"/><br/>
Middle Name <input type="text" name="mname"/><br />
Family Name* <input type="text" name="lname" id="lname"/><br />
Chosen Username* <input type="text" name="uname"/>
</p>
<p><input type="submit" value="submit" id="submit"/>
</form>
<form name="secondform" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?> " >
Test* <input type = "text" name="test"/>
</form>
如果这只是一个快速表单,你可以使用jquery和Javascript
有一个很好的表单插件,允许你异步发送HTML表单。
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
// Hide all forms
$('form').hide();
// Show the first form
$('form').eq(0).show();
$('form').eq(0).on('submit', function() {
// Submit via ajax
// Unhide second form
$(this).hide();
$('form').eq(1).show();
return false;
});
});
</script>
我将验证第一个表单数据是否正确,然后测试表单是否已提交,没有错误。
if (isset($_POST['submit']) && empty($errors)) {
// Output second form
} else {
// Output first form
}
您可以将第一组数据发送到数据库,也可以将它们作为隐藏字段添加到第二个表单中。
这是假设您将所有生成的错误放入名为$errors的数组中。