在表单提交后保留选中的表单元素

时间:2015-06-23 17:34:34

标签: javascript html django forms

我有一个包含5个元素的表单(三个下拉列表,日期,文本)。当我单击提交时,所有表单元素都会重置(下拉列表将分配给第一个值,日期和文本字段将变为空白)。

我理解为什么会发生这种情况 - 因为我的页面被重新生成,静态表单的所有元素都被初始化为其默认值。现在,为了保留表单元素的选定值,我需要将它们分配给表单元素。我预见到这可以通过以下三种方式实现:

选项1

从视图中,我将所选值返回给模板。现在,在模板生成期间,我使用django模板生成模板选项' for / if条件(以花括号开头的那些)

选项2 - 首选

从视图中,我将选定的值返回给模板,并以某种方式将这些值传递给javascript。之后,将使用getElementById并分配值来获取静态表单元素。但是,我不确定,如何将返回的值传递给javascript。或者我应该在模板中编写脚本吗?

选项3

使用缓存 - 最不感兴趣的

你有什么建议,我该怎么办?还有其他第四种选择更好更好吗?提交表单和保留表单值似乎是Web开发的重要部分。所以,我希望可能有更好的方法。

编辑:我没有使用django的ModelForm。相反,我使用简单的html表单并在提交(发布)

上调用视图

2 个答案:

答案 0 :(得分:0)

我并不完全确定我理解正确,但这听起来好像你在实施中遗漏了一些东西。确保在视图中初始化表单时,将发布的数据发送到表单。

def your_form_view(request):
    form = YourForm(request.POST)

根据您存储输入的方式,您只需找到一种向该表单提供该日期的好方法。如果你正在使用ModelForms,你应该像这样实例化你的表单:

model = YourModel.objects.get(id=123)
form = YourModelForm(request.POST, instance=model)

如果您不使用ModelForms,则可以使用initial参数提供默认值。

答案 1 :(得分:0)

1.Node.js 服务器脚本:

const wordx = req.body.input1;

2.2.在你的新 html/ejs 页面上(注意:这应该是一个新的 html/ejs 页面):

<input class="inputAreas" name="input1" id="mainInput" value=<%= wordx %> autofocus required>

3.然后再次在同一页面上,打开一个脚本区域,然后:

  <script type="text/javascript">
    $(document).ready(function(){
      document.getElementById("mainInput").select();
    });
  </script>

我知道您正在使用 Django,但此解决方案也可能有所帮助。