54

Estoy usando el complemento jQuery AutoComplete combinado con ajax. ¿Sabes cómo puedo mostrar un indicador de progreso mientras se realiza la búsqueda de Ajax?jQuery autocompletar: Cómo mostrar una imagen de carga de gif animado

Este es mi código actual.

<script type="text/javascript"> 
    $("#autocomplete-textbox").autocomplete('http://www.example.com/AutoComplete/FindUsers'); 
</script> 

<div> 
    <input type="text" id="autocomplete-textbox" /> 
    <span class="autocomplete-animation"><img id="ajaxanimation" src="../img/indicator.gif")"/></span> 
</div> 

La URL de FindUsers devuelve una lista de usuarios en el contenido.

+0

¿Se puede mostrar su margen de beneficio/código real que está siendo enviada al navegador, es decir, sin los Rubí/ASP/lo que sea ' <% %> 'marcado? –

+0

@Marcel: he editado la publicación –

+1

Todavía hay un '%>' en ella; por accidente, o es eso lo que está causando problemas? –

Respuesta

148

autocompletar ya suma la clase ui-autocomplete-loading (durante la duración de la carga) que se puede usar para esto ...

.ui-autocomplete-loading { background:url('img/indicator.gif') no-repeat right center } 
+0

Cuando usa ThemeRoller, el gif de carga relacionado la información se elimina de la descarga. http://bugs.jqueryui.com/ticket/6046 – camainc

+3

Creo que esta es una solución mejor que la aceptada, ya que cuenta cuando no se obtienen resultados de la búsqueda. –

+5

y como la imagen no está en la descarga de themeroller, obténgalo aquí: http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/images/ui-anim_basic_16x16.gif – commonpike

47
$("#autocomplete-textbox").autocomplete 
(
search : function(){$(this).addClass('working');}, 
open : function(){$(this).removeClass('working');} 
) 

donde trabajo clase CSS se define de la siguiente manera:

.working{background:url('../img/indicator.gif') no-repeat right center;} 

EDITAR

de Sam answer es un mejor enfoque para abordar el problema

+6

usando la clase ui-autocompletar-cargando es más preferible ya que cuando no hay resultados devueltos este indicador permanece confundiendo al usuario –

+1

respuesta: function() {} - Activado después de completar una búsqueda – pszaba

1

Si no hay resultados, no se trabaja se puede hacer esto:

$("input[name='search']").autocomplete({ 
..., 
select: function(event, ui) { 
action show image 
} 
}).data("autocomplete")._renderItem = function(ul, item) { 
action hide image 
} 
Cuestiones relacionadas