2017-01-24 4 views
1

私のコードでは、ボタン.getmoreがスクロールダウンしてクリックされます。それはdatabase.Worksからデータを読み込みます。クリックごとに5秒間無効にする必要があります。この遅延タイマーを設定するにはどうしたらいいですか?最初のクリックから5秒間このボタンを無効にする方法はありますか?

または、この機能が起動すると5秒間この機能を無効にすることはできますか?ボタンを無効にするか、機能が無効になります。

$(window).scroll(function(){ 
    if ($(document).height() <= $(window).scrollTop() + $(window).height()) { 
     // Here how can i set a delay time of 5 sec before next click 
     $('.getmore').click(); 
    } 
}); 
+0

私はあなたが達成しようとしているか知っているが、むしろ固定を使用するよりも、イベントリスナーを追加するほうがよいのではないでしょうサーバーが応答するまでボタンを無効にしたままにしますか? – AndreFeijo

+0

setTimeout(function(){$ {'getmore'}。click();}、 "5000") –

答えて

3

を使用してsetTimoutdisable the button with javascriptを使用することです。

$('.getmore').prop('disabled', true); 
setTimeout(function() { 
     $('.getmore').prop('disabled', false); 
}, 5000); 
+0

これは$( '。getmore')の後に貼り付けました。 。それは、それが同じ問題に戻った後に初めて働いています。どのように私はクリックごとに無効にすることができます –

+0

その場合、このコードを呼び出すclickイベントと[ハンドラ](https://api.jquery.com/click/)をバインドする必要があります。 –

+0

okありがとう男........このコードで5秒間動作します。 ....私はちょうど30分の時間を増やし、それは完全に動作しています。 –

1

一つの解決策は、あなたがjQueryのののsetTimeout()関数を使用することができますdocument.getElementById("yourButtonID").disabled = true;

0

Uは、その後にsetTimeout()nを使用することができます。

setTimeout(document.getElementById( 'ur_button_id')。style.display = 'none'、500);

あなたははclickHandler内のフラグを使用することができます
0

var clickHandler =() => { 
 
    if (clickHandler.running) 
 
    return 
 
    
 
    clickHandler.running = true 
 
    setTimeout(() => { clickHandler.running = false }, 5000) 
 
    
 
    console.log(new Date()) 
 
    } 
 

 
$('#getmore').click(clickHandler)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id='getmore'>more</div>

関連する問題