我正在尝试找出修改隐藏的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方式可以很好地工作,但是在我试图防止用户重复提交表单时引起了问题。就像编程一样,我解决了一个问题并创建了另一个问题。
预先感谢您的任何想法。
答案 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>