2011-08-26 236 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); 
    }; 
});