2013-12-17 100 views
0

一旦用戶點擊了按鈕,如何讓用戶點擊事件不可點擊幾秒鐘?如何讓用戶點擊事件不可點擊幾秒鐘?

例如,

$('button').on('click',function(){ 
alert('you clicked'); 
} 

它每次都會發出警報。但是我想讓這個按鈕變成其他東西,不管我已經指定了點擊事件,例如,如果用戶在接下來的20秒內再次點擊它應該不起作用,並且在20秒後按鈕應該是可點擊的,即如果用戶點擊20秒後再次發出警報。

+0

你見過的setTimeout()函數。它可以幫助您以秒爲間隔註冊點擊事件。 –

+0

如果你可以使用下劃線然後看看http://underscorejs.org/#throttle –

+0

看到http://jsfiddle.net/arunpjohny/ZxT3L/1/ –

回答

1

未經測試,但:

var isClickable = true; 
$('button').on('click',function(){ 
    //Exit if not clickable 
    if(!isClickable) 
     return false; 

    //Set not clickable 
    isClickable = false; 
    //And finally plan to reset clickable in 20 seconds 
    setTimeout(function(){isClickable=true;},20000); 

    //Then, your code 
    alert('you have just clicked'); 
} 
2
$('button').on('click',function(){ 
    alert('you clicked'); 
    $(this).prop("disabled", true); 
    setTimeout(function(){$(this).prop("disabled", false);},20000); 
} 
+0

好主意。不確定this.attr()在任何情況下都適用。 – sdespont

1

http://jsfiddle.net/bzY62/

$('button').on('click', function(){ 
    var _$this = $(this); 

    if(!_$this.data('blocked')) { 
     alert('you clicked'); 

     _$this.data('blocked', true); 

     setTimeout(function() { 
      _$this.data('blocked', false); 
     }, 5000); // in miliseconds 
    } 
}); 
0

你可以試試這個

var seconds = 5; //seconds to disable a button 
$('#yourbutton').click(function(){ //yourbutton is the id of button 
    var btn = $(this); 
    btn.prop('disabled', true); //disables the buttons 
    setTimeout(function(){ //renable the button after seconds specified 
     btn.prop('disabled', false); 
    }, seconds*1000); 
});