【问题标题】:Multiple use of a form before it is submitted在提交之前多次使用表单
【发布时间】:2012-04-27 04:46:51
【问题描述】:

我是 JavaScript 新手,正在尝试找出执行以下操作的规范方法。

我有一个带有一些复选框和选择器的表单。 假设复选框是音乐风格,选择器是人名。

我希望用户能够为多人选择音乐风格,然后提交包含所有数据的表单。

例如,用户可能首先勾选古典、爵士、摇滚和流行并选择“乔”,然后选择爵士、流行、乡村和电子音乐并选择“简”。因此,“提交人员”和“提交表单”必须有两个不同的按钮。

我想:

  1. 在表单下方填写名称列表及其选择的样式,以供反馈
  2. 允许用户随心所欲地使用表单,然后在最后提交所有数据

我觉得使用 jquery 和 JSON 是完美的,但我不确定使用什么搜索术语来弄清楚如何做到这一点。

如果重要,表单将由 Python 中的 Django 视图处理。

【问题讨论】:

  • 是否需要支持非JS浏览器? (通常约占所有网络用户的 2%。)另外,您是否需要支持移动浏览器(手机、平板电脑)?
  • 无需支持非js浏览器或移动设备。
  • 只是好奇,选择器中可以列出多少人?
  • 大约有20个“人”,用户不需要全部选择。

标签: javascript jquery django forms javascript-databinding


【解决方案1】:

您可以通过将 AJAX 用于提交人来实现此目的。你的工作流程应该是这样的:

  1. 用户选择 Joe 和相应的音乐风格。
  2. 用户点击“提交人员”。在此事件中,将人名 (Joe) 和所选音乐风格编码到 JSON 对象中,并通过 AJAX (jquery ajax()) 请求将其传递给您的后端脚本。
  3. 服务器端脚本执行它需要的任何处理。当它完成时,您的 AJAX 调用的成功处理程序将被调用。此时,您可能可以删除“Joe”,以便用户知道提交成功并且不再为 Joe 提交。
  4. 为您表格中的所有其他人清洗、冲洗、重复。

PS - 当您通过 AJAX 将信息传递到后端时,您不必将其编码为 JSON。您可以将其作为标准 POST 请求发送。要将 Javascript 对象编码为 JSON,请使用 JSON.stringify()

以上是这样做的一种方法,但是它不会像您在问题中提出的那样工作(继续收集数据 - 立即提交),要以这种方式工作,每次用户点击“提交人员”时,添加数据到 Javascript 对象,但不要提交。提交的数据会在 JS 对象中不断积累。

最后,当用户点击“提交表单”时,将数据字符串化并提交。

【讨论】:

    【解决方案2】:

    使用 django form-wizard 怎么样.. 就够了吗? https://docs.djangoproject.com/en/dev/ref/contrib/formtools/form-wizard/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      相关资源
      最近更新 更多