我的web應用程序中有很多按鈕,它們向PHP請求和發佈數據以檢索和更新數據庫。我正在努力創建一種通用的方式來防止在提交表單時多次按下按鈕,因爲我使用的是AJAX和Jquery。javascript中的通用按鈕處理程序
這是我目前的實施,但我甚至不知道它是否工作。它似乎工作99%的時間。
在我的共同functions.js文件我有這個功能,這是在全球範圍內
var canClick = true;
function buttonWithPromise(promise){
if(!canClick) return;
canClick = false;
promise.done(function(){
canClick = true;
});
}
那麼任何時候我附上。點擊DOM元素我不喜歡這樣寫道:
$('body').on('click', '.table > .row', function(){
var nbr = $(this).attr('nbr');
buttonWithPromise(get_count(nbr));
});
而一些可能被調用的函數將有一個延遲對象。
function get_count(){
var defer = $.Deferred();
var options = "getCount"
Query.init(options)
.fetchData(function(data){ //Ajax data request
if(data){
}
defer.resolve();
});
return defer.promise();
}
由於這隻有時有效,我可以說它是錯的。任何改進建議?
請定義您遇到的關鍵問題,以便有人可以幫助您。 – 2014-11-24 03:52:54
我不知道問題是什麼。它只有時有效。例如,如果我點擊某個請求數據列表的內容,但我沒有馬上得到它,那麼我將盡快獲取該數據,因爲我可以點擊。我試圖阻止這種情況,但似乎只是在某些時候才起作用。 – user3822370 2014-11-24 03:56:05