2010-11-07 70 views
2

所以如果你有像SO這樣的最喜歡的按鈕,那麼用戶可以繼續點擊,最喜歡的東西會保持關閉和開啓等。如何在用戶點擊後禁用可點擊元素?

但是,它似乎是由於速度點擊而發生某種競爭情況,並且事情開始變得有趣,並且一旦我刷新了頁面,它們就恢復正常。這個問題似乎更多的是在UI方面比後端,但我不能調試,因爲這給了程序的時間和競爭條件已經消失。

我有SET NOCOUNT ON;在我的SQL過程中,如果你想知道的話。

因此,一旦用戶點擊「最愛」按鈕,我應該採取哪些措施以確保他/她不再點擊它,直到我們從Ajax請求中回聽?

我正在聯繫數據庫的每個做或撤消最喜歡的...是那麼糟糕? (不是與我原來的問題我猜)

回答

2

僞代碼:

anchors = [DOMElement, DOMElement]; 

anchors.each(function() { 

var clickable = true; 

el.onclick = function() { 
    if (clickable) { 
     clickable = false; 
     ajaxStuff({ 
     done: function(){ 
      clickable = true; 
     } 
     }) 
    } 
}); 

基本上,每一元素的情況下調用一個函數,設置一個可點擊的變量,在點擊執行,如果點擊是真的,然後將其設置爲false,並將其設置回ajax完成。