我正在使用 jQuery UI Autocomplete 来构建搜索界面。
我已经定义了一个自定义函数,它返回搜索结果并在按下键时自动更新它们,但是有时这个自定义函数在按下下一个键之前没有完成(即当我已经写了“Washi”时它仍在处理“Wash” (在写“华盛顿”的路上)。
我希望每次调用自动完成“源”事件来取消前一个功能(Wash)并启动新功能(Washi)。具有下次通话取消功能(Washi)和启动功能(Washin)等。
这种事情是怎么做的?
我正在使用 jQuery UI Autocomplete 来构建搜索界面。
我已经定义了一个自定义函数,它返回搜索结果并在按下键时自动更新它们,但是有时这个自定义函数在按下下一个键之前没有完成(即当我已经写了“Washi”时它仍在处理“Wash” (在写“华盛顿”的路上)。
我希望每次调用自动完成“源”事件来取消前一个功能(Wash)并启动新功能(Washi)。具有下次通话取消功能(Washi)和启动功能(Washin)等。
这种事情是怎么做的?
你应该能够做这样的事情:
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 );
}
});
}
});
lastXhr
var 存储最新的 xhr 请求。如果有一组并且调用了源函数,则它会中止 lastXhr 请求并创建一个新请求。当 ajax 请求返回时,如果确保它与 lastXhr 匹配,则它不会调用该response()
函数。