2

jQueryUIオートコンプリートを使用して検索インターフェイスを構築しています。

検索結果を返し、キーを押すと自動的に更新するカスタム関数を定義しましたが、次のキーを押す前にこのカスタム関数が完了しない場合があります(つまり、すでに「和紙」と書いている場合でも「和紙」を処理します) (「ワシントン」を書く途中)。

オートコンプリートの「ソース」イベントを呼び出すたびに、前の関数(Wash)をキャンセルして、新しい関数(Washi)を開始したいと思います。次の呼び出しキャンセル機能(和紙)や開始機能(和紙)など。

このようなことはどのように行われますか?

4

1 に答える 1

3

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

var lastXhr;
$( "#myAutocomplete" ).autocomplete({
    source: function( request, response ) {
        if (lastXhr) lastXhr.abort();
        lastXhr = $.getJSON( "search.php", request, function( data, status, xhr ) {
            if ( xhr === lastXhr ) {
                response( data );
            }
        });
    }
});

varはlastXhr最新のxhrリクエストを保存します。セットが1つあり、ソース関数が呼び出された場合、lastXhr要求を中止し、新しい要求を作成します。ajaxリクエストがlastXhrと一致することを確認して戻った場合、一致しない場合はresponse()関数を呼び出しません。

于 2010-12-14T15:01:17.853 に答える