我有一个包含5个元素的表单(三个下拉列表,日期,文本)。当我单击提交时,所有表单元素都会重置(下拉列表将分配给第一个值,日期和文本字段将变为空白)。
我理解为什么会发生这种情况 - 因为我的页面被重新生成,静态表单的所有元素都被初始化为其默认值。现在,为了保留表单元素的选定值,我需要将它们分配给表单元素。我预见到这可以通过以下三种方式实现:
选项1
从视图中,我将所选值返回给模板。现在,在模板生成期间,我使用django模板生成模板选项' for / if条件(以花括号开头的那些)
选项2 - 首选
从视图中,我将选定的值返回给模板,并以某种方式将这些值传递给javascript。之后,将使用getElementById并分配值来获取静态表单元素。但是,我不确定,如何将返回的值传递给javascript。或者我应该在模板中编写脚本吗?
选项3
使用缓存 - 最不感兴趣的
你有什么建议,我该怎么办?还有其他第四种选择更好更好吗?提交表单和保留表单值似乎是Web开发的重要部分。所以,我希望可能有更好的方法。
编辑:我没有使用django的ModelForm。相反,我使用简单的html表单并在提交(发布)上调用视图答案 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,但此解决方案也可能有所帮助。