代码之家  ›  专栏  ›  技术社区  ›  roflwaffle

创建一个大表单,需要建议

  •  0
  • roflwaffle  · 技术社区  · 15 年前

    我必须建立一个大表格供用户填写,以便在我工作的学院申请研究生学习。会有大量的信息需要收集(多个地址、个人信息、商业信息、过去的学校信息、经验等),我想知道处理这一切的最佳方法。我将使用php和javascript。

    我是否可以使用任何帮助器或框架来帮助构建/验证表单,这是我可以直接进入现有项目的东西?

    还希望得到任何关于跟踪大型表单和结果数据的建议。

    5 回复  |  直到 15 年前
        1
  •  5
  •   Adam Davis    15 年前

    您需要使用多个页面,并且需要包含一个机制,用户可以离开,然后回来填写表单的其余部分(或者如果他们意外断开连接)。否则,你会遇到各种各样的用户问题,不是因为你的服务,而是因为他们使用的电脑和互联网连接都很脆弱等等。

    调查软件可能是您所做工作的合理近似值,而且大多数php cms都有调查包。您是从零开始构建它,还是在下面有一个现有的cms?

    -亚当

        2
  •  3
  •   Mark Hurd    15 年前

    一些提示,不知道你的形式的所有细节:

    不要一次向用户显示所有内容——这可以通过多个页面来完成,也可以通过在表单上有选择地显示/隐藏元素来完成。提供上下文导航,上面写着“你在第3步,共10步”,这样用户就可以知道他们在表单中的位置,以及完成表单需要付出多少努力。

    提供一种稍后保存和返回的机制是一个很好的想法。如果可能的话,提供一个链接到他们选择的电子邮件帐户-你想让这个组件尽可能容易使用,并要求他们填写一个额外的用户名/密码来检索他们的数据,这只是完成的另一个障碍。

    只要求你绝对需要的。是的,你必须在这里打一些政治斗争——每个人都想得到他们能得到的。解决这一问题的一种方法(当你有来自多个群体的压力时尤其有效)是构建一些原型:1用所有的东西,1用几个部分减少或删除。让每个小组的利益相关者填写这两个表格,并测量完成时间或滚动吞吐量产量。当你有了完成数据,并且他们意识到其他小组(除了他们的小组)要求的是多少,他们更容易合作。 简言之,尽可能删除-如果用户愿意,让他们稍后返回以提供更多详细信息。

    把你所有的输入写在索引卡上,看看它们是如何逻辑地结合在一起的。通常,您会发现更有效的分组或订单。你很可能会想出更多有用的想法。这是 极其 将纸质表单转换为在线表单时很重要。 Usability.gov has a fantastic case study 关于这个话题。

        3
  •  0
  •   random    15 年前

    除了一张单子还有一篇文章 on building sensible forms 那是一本好书

    为什么一开始表单需要很大?难道你不能把它简化成帐户的基本要素,并为他们提供一种稍后回来充实其余细节的方法吗?

    对于表单验证,在jquery验证插件上弹出一个Gander, Validation

        4
  •  0
  •   GEOCHET S.Lott    15 年前

    我同意亚当的观点,但我有一些建议给你。

    如果我是你,我会创建一些虚拟隐藏的选项卡,用一个下一步按钮安装在多个表单中。 您可以创建一些可以由javascript控制的。第一个节目是第一个收集个人信息的节目,如姓名、生日、电子邮件等。. 一旦用户填写好并点击下一步按钮,隐藏这个并显示另一个将要求其他信息,如地址等。

    一旦整个潜水强制完成,最后一个DIV会放置一个提交按钮,该按钮会立即将整个信息提交给服务器。

    为什么这样做?

    1. 用户不会感到震惊,因为每次都看不到一张长表格,并且会填写患者信息。

    2. 你一次点击服务器;通常Universite和大学的服务器太忙,你最好设计一个点击率最低的表单。这可以算作性能提示。

    3. 由于您将一次提交整个数据,因此您不必担心用户是否会继续填写其他页面的问题,因此您将使用较少的会话,这些会话仍将作为性能提示。

    4. 这样可以使您的表单更有趣,您可以调用它来执行类似Ajax的操作。

        5
  •  0
  •   user42092    15 年前

    您可以添加javascript表单验证以使其更易于用户使用,但有一件事您永远不应该忽略,那就是服务器端验证…这在历史上在PHP中很糟糕。

    有一件事能让你的生活轻松上百万倍,那就是 filter library 特别是 filter_input_array() 因为您可以通过编程方式构建输入验证,而不必复制和粘贴许多检查。这需要一些习惯,但它比以前的做事方式要好得多。