在同一页面上有2个表单,但只在第一次提交后加载第二


Having 2 forms on same page but only loading second after first is submitted

所以我想做的是,有一个表单显示在加载中,它要求用户提供他们的详细信息,如名称等,然后一旦用户点击提交,我希望这些信息传递到下一个表单,我知道我必须隐藏字段。

我想要另一个表单显示后,他们点击提交,这一切都必须使用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"/>&nbsp;
  </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的数组中。