私は素晴らしいBlockUIを使用しており、デフォルトを使用して設定しました
$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);
これは素晴らしいことです。ただし、ページにオートコンプリート要素を追加すると、ユーザーが入力を開始するとすぐにblockUIが起動します。ブロックUIを起動するためにajaxが呼び出すものを明示的に設定するのではなく、特定のajax関数のblockUIを無効にする方法を誰かが考えることができますか?
jQueryでは、ajax呼び出しはさまざまな設定を受け入れます。Ajaxリクエストを構成するキーと値のペアのセット。すべての設定はオプションです。
ここに次のものがあります。
設定名:グローバル、タイプ:ブール値、デフォルト:true
説明: このリクエストに対してグローバルAjaxイベントハンドラーをトリガーするかどうか。デフォルトはtrueです。falseに設定すると、ajaxStartやajaxStopなどのグローバルハンドラーがトリガーされなくなります。これは、さまざまなAjaxイベントを制御するために使用できます。
例:
$.ajax({
global: false,
type: "POST",
url: 'ajax/test.html',
success: function(data) {
$('.result').html(data);
alert('Load was performed.');
}
});
上記の例では、blockUIなどのajaxstartまたはajaxstopイベントの実行を停止します。
あなたはこのようなことをすることができます:
var dontBlock = false;
$(document).ajaxStart(function(){
if(!dontBlock)
$.blockUI();
}).ajaxStop($.unblockUI);
// And in the ajax methods (to be excluded), set dontBlock accordingly
$('#autocomplete').keydown(function(){
dontBlock = true;
$.ajax({
// url, data etc.
success: function(){ dontBlock = false; }
});
});