我编写了这段简单的代码,以防止多次提交表单。
jQuery.fn.preventDoubleSubmit = function() {
this.find(":submit").each(function() {
$(this).click(function() {
this.originalValue = this.value;
this.disabled = true;
this.beenClicked = true;
});
});
// [...]
return this.submit(function() {
if (this.beenSubmitted) {
return false;
} else {
this.beenSubmitted = true;
}
});
};
// [...]
不幸的是,使用Safari它不起作用。当我单击表单时,该按钮被禁用,Safari不会提交表单。
有什么想法吗?
答案 0 :(得分:2)
您知道您无需点击表单提交按钮,对吗?我认为你应该采取一种全新的方法,并考虑到这一点。要防止双重提交,只需:
$(".selector").submit(window.mySubmitHandler);
function mySubmitHandler(evt) {
$("#submitButton").attr("disabled", true);
//do other stuff here if you want
//redefine the function in the function itself
window.mySubmitHandler = function(evt) {
evt.preventDefault();
}
return true;
}
这样,该函数将允许第一次提交并覆盖自身。然后,每次后续尝试都将简单地停止事件的默认行为。