我正在处理一个遗留应用程序,其中他们对许多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的通话时间,但我想您明白了。

编辑:嗯...实际上,忘记了最重要的部分。如果(!提交)。

09-19 23:52