我正在使用JQuery UI插件blockUI來阻止每個Ajax請求的UI。它的作用就像一個魅力,但是,我不想阻止UI(或者至少不會顯示「請稍候」消息),當我進行ajax調用以獲取自動完成建議項時。我怎麼做?我正在使用jQuery自動完成插件來實現自動完成功能。jQuery塊UI異常
有沒有一種方法可以告訴塊UI插件不阻止用戶界面的自動完成?
我正在使用JQuery UI插件blockUI來阻止每個Ajax請求的UI。它的作用就像一個魅力,但是,我不想阻止UI(或者至少不會顯示「請稍候」消息),當我進行ajax調用以獲取自動完成建議項時。我怎麼做?我正在使用jQuery自動完成插件來實現自動完成功能。jQuery塊UI異常
有沒有一種方法可以告訴塊UI插件不阻止用戶界面的自動完成?
$('#myWidget').autocomplete({
source: function(data, callback) {
$.ajax({
global: false, // <-- this is the key!
url: 'http:...',
dataType: 'json',
data: data,
success: callback
});
}
});
使用模態塊(塊UI)意味着阻止來自用戶的任何輸入,我會建議普通的老式throbber顯示'請稍等..'並阻止(設置屬性readonly =「只讀」)您的輸入控件直到ajax請求完成。
上面的UI似乎是自相矛盾的!
這似乎並沒有答案。我使用'$(document).ajaxStart($。blockUI).ajaxStop($。unblockUI)阻止了所有的ajax請求;''''''''''''''''''''''我希望blockUI插件可以配置爲例外。 – Chirantan 2010-04-16 06:20:15
嘗試使用裝飾
$.blockUI = function() {
if (condition_you_dont_want_to_block) {
return;
}
return $.blockUI.apply(this, arguments);
}
,或者你可以寫自己的塊功能就是聰明
function my_blockUI() {
if (condition_you_dont_want_to_block) {
return;
}
$.blockUI();
}
$(document).ajaxStart(my_blockUI).ajaxStop($.unblockUI);
您可以設置blockUI通過添加網頁上的所有功能工作到一個全局的jQuery事件處理程序。爲了確保它不會在自動完成ajax調用時被調用,我們必須確定該調用是否爲自動完成調用。問題是這些全球功能沒有那麼多的信息可供他們使用。但是ajaxSend確實獲得了一些信息。它獲取用於進行ajax調用的設置對象。設置對象具有要發送的數據字符串。所以你可以做的是附加到每個數據串在每一個Ajax請求在你的網頁是這樣的:
¬autocomplete=notautocomplete
例如:
$.ajax({data:"bar=1&foo=2¬autocomplete=notautocomplete"})
然後我們就可以把這個代碼在文檔準備部分之前別的:
$(document).ajaxSend(
function (event, xhr, ajaxOptions){
if(ajaxOptions.data.indexOf("notautocomplete") !== -1){
$.blockUI;
}
});
$(document).ajaxStop($.unblockUI);
當然其他更好的想法是尋找一些在自動完成請求是唯一的,如URL,而是取決於它的自動完成插件您正在使用以及您如何使用它。
嗯,看起來是在jQuery的:) 你可以使用一個全球性的標誌,表示如果是自動完成呼叫,並在一般autcompletefunction
var isAutoComplete = false;
function autoComplete(autocomplete){
isAutoComplete = true;
if($(autocomplete).isfunction())
autocomplete();
}
$(document).ajaxStart(function(){if(!isAutoComplete)$.blockUI();}).ajaxStop(function(){isAutoComplete = false;$.unblockUI();});
這不是一個很好的解決方案包裝它缺少功能但它應該工作...
感謝這個人,愛你 – franchez 2014-10-24 09:21:08