我有一个jQuery UI Autocomplete控件,当minLength = 3时触发Ajax请求.问题如下:假设我输入"fic"作为初始搜索词 - 这很好.请求触发并返回结果.我决定不想选择任何结果,然后再次重新输入相同的搜索(fic).这次没有Ajax请求触发!
我的代码如下所示:
// ... do request
$("#reportSearch").autocomplete({
delay: 50,
minLength: 3,
source: function(q, add){
$.ajaxSetup ({ cache: false});
$.ajax({
type: "GET",
url: K_URL_REQUEST
Run Code Online (Sandbox Code Playgroud)
所以基本上在上面描述的第二个场景中没有触发"源"回调.似乎这样做的原因是自动完成控件保留在前一个搜索词上,因为它匹配 - 没有触发搜索:
// Taken from jquery-ui-1.8.4.custom.min.js
if (a.term != a.element.val()) { // *** THE MATCH IS HERE
//console.log("a.term != a.element.val(): "+a.term+", "+a.element.val());
a.selectedItem = null;
a.search(null, c) // *** SEARCH IS TRIGGERED HERE
}
Run Code Online (Sandbox Code Playgroud)
为了让它每次都能触发,我只需在搜索返回后将搜索词重置为null.这种方式按预期工作.
事情是我不明白这种行为.我认为每次搜索都应该是截然不同的.没有缓存(或者不应该是缓存).
所以虽然我已经解决了我的问题,但我仍然觉得我在这里错过了一些东西.
任何人的想法?提前致谢!