我有一个JavaScript,它将输入按钮的属性更改为"disabled",这样用户就不会提交两次页面。
// Disables multiple submit
function disableSubmit (btn, submitForm) {
// Sets button as disabled, changes class and cursor
$(btn).attr("disabled", true);
$(btn).toggleClass("disabled alt2");
$(btn).css('cursor', 'initial');
$(btn).attr("value", "Sender...");
// Submits form
$(submitForm).submit();
}
// Disables submit for order form
$("#send-order").click(function () {
return disableSubmit(this, "#order");
});
问题是,我需要跟踪提交页面的按钮的名称,这样我就可以在Django view.py
文件中处理它。
HTML
<input value="Send bestilling" id="foo" name="send-order" type="submit" class="button alt2">
查看.py
request.POST.get("send-order", False)
但是,如果我使用脚本提交页面,我就无法获得提交页面的输入的名称。有没有办法在我的脚本中为提交页面的按钮设置名称?
我试过了,但没有成功:
$(submitForm).submit().attr("name", "send-order");
解决方案
我必须更改views.py
内部的代码才能使其工作。
实现这一点的一种方法是在表单上创建一个具有自己名称的隐藏输入。下面是这样的。
<input type="hidden" name="buttonName" id="buttonName" />
然后,在disableSubmit函数中,让它在提交之前设置该输入的值。
$(submitForm)
.find("input[name=buttonName]")
.attr("value",
$(btn).attr("name")
);
从那里,您可以在View.py.中检索"buttonName"值
您可以使用preventdefault或返回false
$("#send-order").click(function (event) {
event.preventDefault();
return disableSubmit(this, "#order");
});
或者
<input id="send-order" value="Send" type="submit" onclick="disableSubmit(this, '#order');return false" />