2

我正在使用 jQuery UI Autocomplete 来构建搜索界面。

我已经定义了一个自定义函数,它返回搜索结果并在按下键时自动更新它们,但是有时这个自定义函数在按下下一个键之前没有完成(即当我已经写了“Washi”时它仍在处理“Wash” (在写“华盛顿”的路上)。

我希望每次调用自动完成“源”事件来取消前一个功能(Wash)并启动新功能(Washi)。具有下次通话取消功能(Washi)和启动功能(Washin)等。

这种事情是怎么做的?

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 );
            }
        });
    }
});

lastXhrvar 存储最新的 xhr 请求。如果有一组并且调用了源函数,则它会中止 lastXhr 请求并创建一个新请求。当 ajax 请求返回时,如果确保它与 lastXhr 匹配,则它不会调用该response()函数。

于 2010-12-14T15:01:17.853 回答