如何在Django表单中更新隐藏字段

时间:2019-01-24 20:04:40

标签: javascript jquery django django-forms django-views

我正在尝试找出修改隐藏的django表单字段的最佳方法。或者,即使有可能。我有HTML设置来完成此任务,并且运行良好。但是,为了防止多次提交,我不得不更改HTML,现在我无法弄清楚如何通过HTML按钮传递值,具体取决于用户单击的内容。

以前,我有两个按钮,定义如下:

<button type="submit" class="button1" name="status" value="Saved"><h3 class="txtalgn4">Save</h3></button>

<button type="submit" class="button2" name="status" value="Submitted"><h3 class="txtalgn4">Submit</h3></button>

如上所述,这非常适合将值传递给模型的属性。状态值已按预期保存,具体取决于用户单击了哪个按钮。

现在,针对我今天打开的这个问题,我将按钮更新为type="button" ... How To Prevent Double Submit With Form Validation

我尝试使用以下代码:

<button type="button" class="button1" name="status" value="Saved"><h3 class="txtalgn4">Save</h3></button>

<button type="button" class="button2" name="status" value="Submitted"><h3 class="txtalgn4">Submit</h3></button>

然后,我还将HTML中的状态字段更改为{{ status.as_hidden }}以获取值。仅当我在数据库结构中对状态值进行硬编码时,此方法才有效。我需要能够根据用户单击的内容动态获取此值。 JQuery with Ajax是否是正确的方法?是否有一些简单的方法可以根据用户单击的按钮来修改隐藏字段?

是否有更好的方法可以尝试以隐藏方式获取此字段?如上所述,使用type="submit"的HTML方式可以很好地工作,但是在我试图防止用户重复提交表单时引起了问题。就像编程一样,我解决了一个问题并创建了另一个问题。

预先感谢您的任何想法。

1 个答案:

答案 0 :(得分:1)

像以前一样使用两个提交按钮。但是除了禁用按钮之外,您还可以禁用整个表单(一旦提交)。

首先,为您的表单提供一个唯一的html ID。

<form id="myform">
    ...
</form>

<!-- JS code -->
<script type="text/javascript">
$('#myform').on('submit', function(e) {
    if ($(this).hasClass('submitted')) {
        // prevent submission
        e.preventDefault();
        return;
    }

    $(this).addClass('submitted');
});
</script>