2012-06-13 110 views
3

可能重複:
Need to cancel click/mouseup events when double-click event detected
Preventing double-click of Submit button只能提交一次

我有以下功能

$("#btnSubmit").click(function(){ 
       $("#btnSubmit").attr("disabled", "disabled"); 
      ....make ajax request 
       $("#btnSubmit").removeAttr("disabled"); 

} 

問題是,我要處理的第1點擊的雙擊。或者單擊一次。因爲當用戶雙擊時它會運行兩次函數。如果我使用.one(),它將只處理單擊。但我也想處理雙擊,但只處理一次。什麼解決方案?

+4

在Web應用程序中處理單擊和雙擊幾乎是不可能的,出於可用性原因,處理一個可怕的想法。 – Pointy

+0

你也應該使用「.prop()」來設置/取消設置「disabled」屬性:'.prop(「disabled」,true)'或'.prop(「disabled」,false)'。 – Pointy

+0

第一次點擊後,我會禁用按鈕。 – powtac

回答

2

使用

dblclick()

,而不是click()

瞭解更多關於.dblclick()

你的代碼看起來應該像

$("#btnSubmit").dblclick(function(){ 
    $("#btnSubmit").attr("disabled", "disabled"); 
    $("#btnSubmit").removeAttr("disabled"); 
}); 

您可以使用一個標誌

var alreadyClicked = false; 
$("#btnSubmit").click(function(){ 
    if(alreadyClicked) { 
     alreadyClicked = false; 
     return false; 
    } else { 
    alreadyClicked = true; 
    $("#btnSubmit").attr("disabled", "disabled"); 
    $("#btnSubmit").removeAttr("disabled"); 
    } 
}); 
+0

純JS文檔:https://developer.mozilla.org/en/DOM/element.ondblclick – StuperUser

+3

這不會處理單擊。 – 2012-06-13 16:00:17

+0

第二代碼塊不會區分雙擊與隨後的單擊。所以一旦點擊一個按鈕,用戶將無法提交數據更改。 –

1

設置一個定點變量來阻止進一步的點擊來自於直到AJAX請求完成所作用:

var clicked = false; 
$("#btnSubmit").click(function(){ 
    if (clicked) { 
     return; 
    } else { 
     clicked = true; 
    } 
    $.ajax({ 
     success: function() { 
      clicked = false; 
    }); 
}); 
0

我的解決方案將停止雙擊我檢查了當按下按鈕時變量。

會發生什麼是click變量作爲檢查來查看函數當前是否正在運行。

var click = false; 
$("#btnSubmit").click(function(){ 

    if (click == false) { 
    click = true; 

    $("#btnSubmit").attr("disabled", "disabled"); 

    //make ajax request 

    $("#btnSubmit").removeAttr("disabled"); 

    click = false; 
    } 
} 
相關問題