2012-03-30 25 views
-4

如果按鈕已被點擊,我該如何停止向服務器發送數據?我不希望禁用=「禁用」響應(按鈕是自定義的)。JS,如果它正在執行中,如何停止進程執行...?

我試圖設置一個全局的var button_clicked = FALSE;設置爲true,當點擊按鈕時,在接收到響應後再次設置爲false。但是,這並不是工作,因爲我的鼠標搞砸了,垃圾郵件點擊真的很快(雖然我只點擊一次 - >這實際上幫助我看到提到的方法並不那麼敏感)。

是否有更好的方法來停止進程或禁用DOM元素onClick?也許禁用事件? js或jquery的答案更可取。或者,也許這真的不能在真正的快速請求中完成。我知道這取決於很多東西(比如用戶的cpu)。任何評論或回答是受歡迎的。也許對於每一次點擊頁面設置用戶等待幾個毫秒?

+0

所以這是什麼按鈕?這是AJAX請求的一部分嗎?這是表單的提交按鈕嗎?你能指定嗎? – Joseph 2012-03-30 00:53:50

+0

就像我說的這是一個自定義按鈕(不使用buton ur提交標籤),是的,它是爲ajax請求。 – 2012-03-30 00:54:43

+1

您的電腦很可能會比您的點擊速度快。你能告訴我們使用的代碼嗎?一面旗子應該適合你需要的東西。 – Louis 2012-03-30 00:58:04

回答

1

試試這個小構造:

function MyForm() 
{ 
    this.check = false; 

    this.form = function(){ 
    var f = this; 
    $('#form').submit(function(e){ 
     e.preventDefault 
     if(f.check === false) 
     { 
     f.check = true; 
     $.ajax({ 
      ...blah blah 
      success: function(data) 
      { 
      //if you want to let them send again, uncomment this next line 
      //f.check = false; 
      } 
     }) 
     } 
    }); 
    this.form(); 
} 

$(document).ready(function(){ 
    var my = new MyForm(); 
}); 
0

如果您註冊事件偵聽器,則您獲得的Event對象將有一個preventDefault()方法。這樣可以避免點擊鏈接或發送提交的表單。

如果是由事件處理程序觸發的自定義操作,則唯一的可能是檢查處理程序函數中的條件是否應該執行該操作。然而,禁用按鈕並不是那麼糟糕,因爲您需要通知用戶不會發生任何事情。

0

單擊按鈕時移除點擊處理程序。準備好下一次點擊時再添加一次。

button.onclick = null;