5

私は素晴らしいBlockUIを使用しており、デフォルトを使用して設定しました

$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);

これは素晴らしいことです。ただし、ページにオートコンプリート要素を追加すると、ユーザーが入力を開始するとすぐにblockUIが起動します。ブロックUIを起動するためにajaxが呼び出すものを明示的に設定するのではなく、特定のajax関数のblockUIを無効にする方法を誰かが考えることができますか?

4

2 に答える 2

24

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イベントの実行を停止します。

于 2011-04-29T03:19:33.143 に答える
8

あなたはこのようなことをすることができます:

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; }
    });
});
于 2011-03-11T09:23:00.277 に答える