[{'label':'Bob', 'id':'03362548'}, {...}]
。[]
),我想隐藏加载程序gif。如何检测搜索是否没有隐藏加载程序gif的结果?
$('#redir-output').autocomplete({
source: 'php/ajax/autocomplete.php',
search: function(event, ui) {
$('#redir-loader').show();
},
open: function(event, ui) {
$('#redir-loader').hide();
},
select: function(event, ui) {
$(this).attr('name', ui.item.id);
}
});
答案 0 :(得分:1)
默认情况下,当插件显示结果时,它会检查是否有要显示的数据。如果没有,则关闭菜单。
_response: function(content) {
if (!this.options.disabled && content && content.length) {
...
} else {
// it closes the menu when content.length == 0 (no data)
this.close();
}
关闭菜单会提高"关闭"事件,所以我虽然你可以使用它。但是,只有在菜单可见时才会触发关闭事件:
close: function(event) {
clearTimeout(this.closing);
// as the menu might not be visible at that moment, this is reliable
if (this.menu.element.is(":visible")) {
...
this._trigger("close", event);
}
}
我认为你必须使用源代码作为回调并自己实现ajax请求。使用"完成"回调,你可以隐藏加载图标,无论如何应该在请求结束时隐藏,否则返回数据:
$('#redir-output').autocomplete({
source: function(request, response) {
$.ajax({
url: 'php/ajax/autocomplete.php',
data: request,
dataType: "json",
success: function(data, status) {
response(data);
},
error: function() {
response([]);
},
complete: function() {
$('#redir-loader').hide();
}
});
},
,
search: function(event, ui) {
$('#redir-loader').show();
},
open: function(event, ui) {
$('#redir-loader').hide();
},
select: function(event, ui) {
$(this).attr('name', ui.item.id);
}
});?