在提交表单之前多次使用表单

时间:2012-04-15 17:13:03

标签: javascript jquery django forms javascript-databinding

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

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

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

例如,用户可能首先检查Classical,Jazz,Rock和Pop并选择“Joe”,然后选择Jazz,Pop,Country和Electronica并选择“Jane”。因此,“提交人”和“提交表单”必须有两个不同的按钮。

我想:

  1. 在表单下方填写名称及其选择的样式列表,以获取反馈
  2. 允许用户根据需要使用表单,然后在最后提交所有数据
  3. 我觉得使用jquery和JSON是完美的,但我不确定用什么搜索术语来弄清楚如何做到这一点。

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:0)

如何使用django表单向导..这还够吗? https://docs.djangoproject.com/en/dev/ref/contrib/formtools/form-wizard/