我正在尋找一種可能性,以防止所有的功能在執行ajax文章時正在執行。例如:我有一個模式框,您可以通過簡單的製表符導航在兩個窗體之間切換。當用戶提交其中一個表單時,數據將通過ajax發送。那麼我怎樣才能避免用戶可以在表單之間切換,直到帖子完成。 有沒有簡單的方法來做到這一點?jquery防止函數形式執行,而ajax文章正在進行
類似event.stopImmediatePropagation()
在ajax後。
我正在尋找一種可能性,以防止所有的功能在執行ajax文章時正在執行。例如:我有一個模式框,您可以通過簡單的製表符導航在兩個窗體之間切換。當用戶提交其中一個表單時,數據將通過ajax發送。那麼我怎樣才能避免用戶可以在表單之間切換,直到帖子完成。 有沒有簡單的方法來做到這一點?jquery防止函數形式執行,而ajax文章正在進行
類似event.stopImmediatePropagation()
在ajax後。
簡單的方法就是顯示覆蓋圖。佔據整個屏幕並且沒有事件處理程序的元素。最流行的選擇似乎是半透明的div與加載指標,讓用戶瞭解正在發生的事情,並且在請求完成之前網站上沒有任何東西可以工作。
我剛剛停止寫我的一半解決方案,因爲這個答案在各方面都更好。去這,這是正確的方式來做到這一點。 – 2012-03-30 03:35:20
(雖然它會很好,你可以展示一個代碼示例像其他解決方案)。 – 2012-03-30 03:35:58
@BenLee例子在這裏:http://jsfiddle.net/NezTc/11/ – valentinas 2012-03-30 03:54:10
我不知道是否存在其他方法,但我會綁定一個監聽器爲所有的提交,並檢查是否有針對ongoingAjax要求設置一個標誌。這個標誌將由我的ajax調用設置。
像
$(function(){
var onGoingAjaxRequest = false;
$('form').submit(function() {
if(!onGoingAjaxRequest) {
return true;
}
return false;
});
});
我不知道,你可以「切斷」的所有功能,直到在給定的時間點,但我知道你隨時可以:
頭的所有功能與if(isPosting) return;
並添加
var isPosting = true
$.ajax({ [...], complete:function(r){ // this is the ajax function
isPosting=false;
}});
或者,覆蓋了整個事情和dd一個大預加載器和一個Please wait...
消息。
你可以做一個簡單的布爾檢查。在請求時標記該布爾值,然後在請求後將其恢復。 – Joseph 2012-03-30 03:32:48
是的,我想過,但我的腳本有點笨重,我希望能阻止所有其他功能的執行。我真的不想把我的腳本延伸太多。我認爲這是一個常見的案例,jQuery開發人員實施了一些捷徑。 – jarred 2012-03-30 03:40:30