我正在处理一个遗留应用程序,其中他们对许多Ajax表单“提交”使用[a]标签。
如果使用[input]按钮,则可以设置[input]标签的disable属性。
但是在超链接上,禁用不是规范的一部分,并且不是一致的跨浏览器。
我们正在寻找一种简单的解决方案,以阻止超链接上的额外点击。
注意:我们在jQuery中使用JavaScript
最佳答案
womp的解决方案是解决此问题的非常非常彻底的方法。
但是,如果您想要简单一些,我可能会实现semaphore。只需设置一个“submitting”标志,然后测试一下用户单击链接时是否设置了信号灯。您可以通过在DOM对象本身上设置标志或使用全局 bool(boolean) 值来实现。
$('#link').each(function() {
this.submitting = false;
}).click(function() {
if (!this.submitting)
{
this.submitting = true;
var self = this;
$.ajax({
success: function() {
self.submitting = false;
},
error: function() {
self.submitting = false; // make sure they can try again
}
});
}
});
我显然已经缩短了$ .ajax的通话时间,但我想您明白了。
编辑:嗯...实际上,忘记了最重要的部分。如果(!提交)。