удалить spinner из автозаполнения jQuery ui, если ничего не найдено
Я хочу удалить счетчик (рисунок, который показывает, что он загружается) из текстового поля, которое поддерживает автозаполнение jQuery ui. Поскольку нет события для "нет результатов, возвращаемых источником" a не может вызвать это.
$( "#q" ).autocomplete({
source: "${createLink(mapping:'qsearch')}",
minLength: 2,
select: function( event, ui ) {
foo( ui.item.id );
},
search: function( event, ui ) {
bla();
}
});
5 ответов
адаптировано из моего ответа здесь добавьте следующий код для выполнения после завершения поиска (даже с 0 результатов):
var __response = $.ui.autocomplete.prototype._response;
$.ui.autocomplete.prototype._response = function(content) {
__response.apply(this, [content]);
this.element.trigger("autocompletesearchcomplete", [content]);
};
этот код вызовет событие (autocompletesearchcomplete
), которые затем можно привязать к:
$("#q").bind("autocompletesearchcomplete", function(event, contents) {
/* Remove spinner here */
});
надеюсь, что это поможет.
Если вы застряли на старой версии jQuery ui, правильный ответ-использовать класс ui-autocomplete-loading
, который добавляется и удаляется во время запроса/ответа в полете.
вы можете редактировать CSS и удалить счетчик.
$("object_that_has_the_spinner").removeClass ("ui-автозаполнение-загрузка");
С jQuery UI v1.9 вы можете сделать что-то вроде следующего:
$( "#q" ).autocomplete({
source: "${createLink(mapping:'qsearch')}",
select: function( event, ui ) {
foo( ui.item.id );
},
search: function( event, ui ) {
$( "#spinner" ).show();
},
response: function( event, ui ) {
$( "#spinner" ).hide();
}
});
Это известное открытое улучшение для будущих версий jQuery UI...
http://bugs.jqueryui.com/ticket/6777
придется подождать и / или использовать обходной путь (например, отправить специальный ответ с сервера и обработать этот случай в событии open).