2013-04-11 218 views
6

我正在做一個使用jquery提交請求一些數據的web應用程序,但我不想讓人們在第一次提交後多次提交表單。所以我想提交後,下一次提交什麼也沒做幾秒鐘。jQuery表單提交,防止在第一次提交後多次發送

$("#updatestock_form").submit(function(e){ 

    // requesting my data.. 


}); 

我該如何做到這一點?

+0

您可以刪除或禁用提交按鈕,或者您可以使用標誌,檢查是否一個形式已經被髮送 – Uby 2013-04-11 13:07:06

回答

8

「所以我想要提交後,下一次提交什麼也不做,幾秒鐘。」

如果你的意思是你想要的用戶的第二及後續提交嘗試,直到若干秒就可以做,在許多方面之後被忽略。這是首先想到的:

var allowSubmit = true; 
$("#updatestock_form").submit(function(e){ 
    if (!allowSubmit) return false; 
    allowSubmit = false; 
    setTimeout(function(){ allowSubmit = true; }, 5000); 

    // your existing submit code here 
    // requesting my data.. 
}); 

也就是說,有一個標誌,指示是否目前允許提交。在提交事件中,如果該標記爲假,立即返回false以取消提交事件。否則(如果它當前爲true)將標誌設置爲false,設置一個超時,例如5秒後更改標誌,然後繼續使用現有的提交代碼。

+0

謝謝,這就是我一直在尋找! – Edwin 2013-04-11 13:11:35

2
$("#updatestock_form").submit(function(e){ 
    $(this).unbind("submit") 
    $("#submitButton").attr("disabled", "disabled") 
}); 

很簡單。

+0

併爲少數第二件事'setTimeout'添加行 – 2013-04-11 13:08:18

+0

其實這不會工作,你只是刪除jQuery的監聽器,並不妨礙'表單'提交 – Uby 2013-04-11 13:10:35

0

你正在做一個ajax請求提交?因此,創建一些鎖定變量var locked;,並在提交時將其設置爲locked = true;,並在ajax調用完成時將其重置爲false。 (成功條件)

0

按鈕的onclick事件禁用按鈕

$("#buttonId").bind('click', function() { $(this).attr("disabled", "disabled"); }); 

和刪除操作成功後開啓屬性