2 回答
TA贡献2080条经验 获得超4个赞
您只需要在提交提交后disabled设置。您可以使用零延迟来实现:setTimeout
$('.myForm').submit(function () {
setTimeout(() => {
$(this).find('[type=submit]').prop('disabled', true)
}, 0)
})
然后,将发生以下情况:
表单提交事件被触发,因为用户单击或按下了按钮Enter
浏览器正在调用您的
submit
处理程序你正在“武装”你的超时
浏览器正在向服务器提交表单(带有提交按钮的值)
之后您的超时立即触发,禁用按钮
请注意,我submit
在表单上使用了处理程序,而不是click
在按钮上使用了处理程序,因为当焦点位于表单字段上时,也可以通过按下来提交Enter表单,而不仅仅是通过单击按钮。然而,由于表单提交的工作方式,禁用该按钮也将阻止提交Enter。
TA贡献1811条经验 获得超4个赞
我最近遇到了类似的情况,有时我会双击“反弹”。这是我处理它的两种方法:
1) 只需禁用按钮,将 AJAX 数据发送到 PHP 并在成功时恢复按钮
$("#save_button").click(function (e) {
e.preventDefault();
$(this).attr("disabled", true);
var settings = $('form').serialize();
console.log("settings are ", settings);
$.post("data/ajax.php", settings, function (data) {
data = JSON.parse(data);
console.log("data back from save is ", data);
$("#save_button").removeAttr("disabled");
})
});
2)创建一个'nobounce'功能(它基本上做同样的事情,但是在一个计时器上。它使用起来有点简单,因为它只需要在你想要禁用的任何按钮上设置类'nobounce',虽然它是在计时器上,发布完成后启用按钮并不准确。
$('.nobounce').click(function () {
$(this).attr("disabled", true);
setTimeout(function () {
$('.nobounce').removeAttr("disabled");
}, 3000);
});
这些都是 jquery 方法 - 将表单保留在页面上。从您的描述看来,您可能正在通过 PHP 提交表单(请,如果这不是您需要的答案,请提供一些您正在使用的代码,这样可以更清楚!)。如果您通过 PHP 提交,那么对原始问题的一些评论非常有效。
希望这会有所帮助 - 再次,如果没有,请提供一些代码,您可以获得更直接的帮助。
添加回答
举报