跨越多页的表单

时间:2010-10-16 21:49:51

标签: php javascript jquery html forms

如何创建跨多个页面的表单?我想提出大量问题,并根据之前问题的答案,提出新的具体问题。

4 个答案:

答案 0 :(得分:5)

传统方法:将所有以前的问题答案存储在后续页面的<input type="hidden">字段中,以便最后一个表单包含整个提交(仅非全部可见)。缺点:文件上传令人讨厌,数据量可能会变大。

常用方法:随着时间的推移将答案扔到会话或cookie中,最后将它们挑出来。缺点:并发操作最终会产生不可预测的冲突结果。文件上传仍然很烦人。我会为此避免使用cookie /会话存储解决方案。

现代方法:有一个简单的(长)单一形式,但使用JavaScript只显示其中的一部分。单击“下一步”,您只需隐藏上一页内容并显示下一页。最后一个按钮是真正的提交按钮。

答案 1 :(得分:1)

有几种方法可以做到这一点:

  • 逐步填充数据库,按提交提交
  • 在每个页面上保留所有表单字段,但隐藏(<input type='hidden' ...>)不应显示的字段(如@Trufa在其他答案中建议的那样)
  • 累积会话中隐含持久的对象(取决于您的服务器架构)
  • 在一个或多个cookie中累积内容(看起来很狡猾,因为我将其列为完整性)

如果您想要超级时尚,可以在HTML5客户端存储中累积信息。当然,这将排除较旧的Microsoft浏览器。

答案 2 :(得分:0)

不存在跨越多个页面的单个表单:每个页面/表单独立于其他页面。

如果您以某种方式跟踪已经输入的内容(可能在会话变量中),那么您可以在新表单中显示新问题,直到获得所需的所有数据。

答案 3 :(得分:0)

我假设你的问题是,因为没有多页面形式这样的东西,你的意思是如何通过使用多个页面来构建一组用户的答案,每个页面都包含一个表单。

PHP为此类事物提供的机制是会话机制。当用户提交每个页面时,您将在会话中构建一组答案,当您有完整的集合时,会话中的完整答案集将提交到数据库。

这当然不是唯一的方法,你也可以在每个页面提交时逐步将数据添加到数据库中,但是你最终会得到部分答案集,其中人们只完成了第一页或前几页然后放弃它。您必须编写代码来处理这些部分提交。