2011-08-26 198 views
1

可能重复:
jquery disable a button for a specific time限制按钮点击为每5分钟一次

我使用PHP创建一个网站。

在该网站上,我想要一个按钮,用户每五分钟只能点击一次。

我已经确定我将为此脚本使用jQuery,并且我知道在用户单击该按钮后需要将超时时间设置为五分钟。在此超时期间,该按钮不应被点击。

我应该使用什么过程来启用此功能?

问候

+0

这是什么都做PHP呢?用户可以编辑您的客户端脚本并缩短时间限制。 – Cyclone

+0

@rockerest - 这个问题与我列出的dup不同。这不是仅仅停用一段时间的按钮。这是为了每5分钟只允许一次点击。相关但不同的代码来完成这个问题。 – jfriend00

+0

@ jfriend00它的措辞不同,是的,但它显然是一样的意图。 OP的目的是在按下按钮五分钟后禁用该按钮,并且该解决方案有90%通过我发布的问题回答。 – rockerest

回答

0

希望这将帮助你

$('#button').attr("disabled", "disabled"); 
    setTimeout('enableButton()', 5000); 

    function enableButton(){ 
     $('#button').removeAttr('disabled'); 
    } 
+3

... copypasta;) – rockerest

+0

这只是最初禁用按钮(在任何点击之前),然后在5秒钟后重新启用它。这不符合OP所要求的。这是错误的时间段,当按钮被点击时,它并没有被挂钩。 – jfriend00

+0

@ jfriend00大概这个代码会被称为ON按钮的点击事件,而'5000'会是....无论5分钟是什么。但是,是的,我同意你的观点:这是[坏]副本。 – rockerest

3

你可以这样来做。用户可以点击该按钮,然后当他们这样做时,该按钮在接下来的5分钟内被禁用。它被重新启用,5分钟后,下一次它被点击,它再次禁用自身5分钟,等...

$("#go").click(function() { 
    // no more clicks until timer expires 
    $(this).attr("disabled", "disabled"); 

    // do whatever you want on the click here 

    // set timer to re-enable the button 
    setTimeout(function() { 
     $("#go").removeAttr("disabled"); 
    }, 5 * 60 * 1000); 
}); 

你可以看到它在这里工作:http://jsfiddle.net/jfriend00/2scAM/

+1

观看服务器端的时间可能也是一个好主意。 –

+0

是的,如果你真的想要一个给定的用户只能每五分钟做一次,那么它比客户端的东西要多得多。这将需要用户身份验证和服务器端计时器与客户端UI的协调。只有服务器可以真正强制执行此操作,因为简单的页面刷新或在另一个浏览器中加载页面会使按钮再次可点击。 – jfriend00

+0

我测试过你的代码,看起来不正确。 – user872148

1

试试这个

工作demo

$(function(){ 
    $("#inputButton").click(buttonClickHanlder); 

    function buttonClickHanlder(){ 
     //Do you stuff here 
    alert(this.id); 
     //Unbind the click event handler, delay 5 mins and then again bind the event handler 
     $("#inputButton").unbind('click').delay(5 * 60 * 1000).click(buttonClickHanlder); 
    }; 
});