2017-02-06 12 views
2

私は1.5秒ごとに呼び出し機能を実行したい。 ただし、移動機で連続してクリックしている場合 呼び出し機能が連続して呼び出された瞬間から。JavaScriptで重複したクリックイベント処理を防止できますか?

これは私が使用していますコードです:

$('#sendVideo').unbind('click'); 
$('#sendVideo').bind('click', function (event) { 
    $("#sendVideo").prop("disabled", true); 
    call(); 
    setTimeout("$('#sendVideo').prop('disabled', false);", 1500); 
}); 

は、このための解決策はありますか?

var clickInProgress = false; 
$('#sendVideo').bind('click', function (event) { 
    if(clickInProgress) return; 
    clickInProgress = true; 
    $("#sendVideo").prop("disabled", true); 
    call(); 
    setTimeout("$('#sendVideo').prop('disabled', false); clickInProgress=false;", 1500); 
}); 

答えて

3

あなたが巧妙なハックを使用することができます。私はjQueryのわからないですけど、単純なJavaスクリプトで、あなたはこのようにそれを達成することができます:

// set the flag on at capture 
document.querySelector("#sendVideo").addEventListener('click', function(e) { 
    if (this.flagOn) { 
     e.preventDefault(); 
     return false; 
    } 
    this.flagOn = true; 
    return true; 
}, true); 
// delete on bubble 
document.querySelector("#sendVideo").addEventListener('click', function(e) { 
    delete this.flagOn; 
}, false); 

これはあなた自身のコード内の任意の変更を加えることなく、あなたのためにそれを処理する必要があります。

+0

無効なpropをこのステータスとして使用するとよいでしょう –

+0

clickInProgressの値はsetTimeout( "$ sendVideo")で変更されません。 – jichae

0

あなたはキャプチャ段階要素にフラグを設定し、バブル期の間にそれを削除することができます。

関連する問題