Jquery UI autocompletar; minLength: 0 problema

Estoy usando una autocompletar de JQuery UI. Estoy especificando la longitud mínima. Si especifico minLength:2 , necesito escribir 2 caracteres antes de que el servicio se dispare. Si especifico minLength:1 , solo necesito minLength:1 un carácter antes de que se active el servicio de origen.

Sin embargo, cuando especifico minLength:0 , todavía necesito escribir un carácter. Entonces, ¿cuál es el punto de 0 ? ¿cómo es diferente de 1 ? El comportamiento esperado y deseado sería disparar tan pronto como la entrada tenga enfoque …?

Ideas?

Actualización: en su mayor parte, la solución de karim a continuación funciona; sin embargo, al hacer clic en la entrada aparecen las opciones y cuando se hace clic en la fuente se vuelve a enviar la cadena vacía en lugar de la nueva que se acaba de seleccionar, por lo que las opciones de autocompletar aparecer después de seleccionar una opción es igual que si la caja hubiera estado vacía .

Consulte la documentación del método de search :

Desencadena un evento de búsqueda que, cuando los datos estén disponibles, mostrará las sugerencias; puede ser utilizado por un botón de tipo selectbox para abrir las sugerencias cuando se hace clic. Si no se especifica ningún argumento de valor, se usa el valor de la entrada actual. Se puede invocar con una cadena vacía y minLength: 0 para mostrar todos los elementos.

 var source = ['One', 'Two', 'Three', 'Four']; var firstVal = source[0]; $("input#autocomplete").autocomplete({ minLength: 0, source: source, }).focus(function() { $(this).autocomplete("search", $(this).val()); }); 
 .ui-menu-item{ background : rgb(215, 215, 215);; border : 1px solid white; list-style-type: none; cursor : pointer; } .ui-menu-item:hover{ background : rgb(200, 200, 200); } .ui-autocomplete{ padding-left:0; margin-top : 5px; } 
     

Entiendo a través del experimento por qué la respuesta aceptada (voté arriba) puede considerarse un poco incompleta. He añadido un poco de intención para hacer que el UX sea más parecido a un cuadro combinado:

 $('#Carrier').autocomplete( { source: '@Url.Action("AutocompleteCarrier", "Client")', minLength: 0, select: function (event, data) { $(this).autocomplete('disable'); } }) .blur(function(){ $(this).autocomplete('enable'); }) .focus(function () { $(this).autocomplete('search', ''); }); 

Tuve el mismo problema y lo resolví de esta manera. Creo que el código a continuación deja mucho más claro cuál es el texto que se envía al servicio de autocompletado cuando el campo obtiene el foco. En particular, está claro por qué funciona cuando el campo ya contiene algo.

 $(function() { $("input#autocomplete").autocomplete({ source: "completion.html", minLength: 0, select: function( event, ui ) {} }); }); $("input#autocomplete").focus(function() { $(this).autocomplete("search", $(this).val()); }); 

¡Esto realmente funciona! Probado en IE, Firefox

 $("input#autocomplete").autocomplete({ minLength: 0, source: source, }).focus(function() { setTimeout( "if ($('#input#autocomplete').val().length == 0) $('#input#autocomplete').autocomplete(\"search\", \"\"); ",1); }); 

Tuve el mismo problema y obtuve la forma de solucionar este problema.

El problema es que cuando se ha seleccionado una opción, la entrada se enfocará, esto ejecutará la search sin ningún filtro y mostrará la función de autocomplete nuevamente.

Este problema no ocurre cuando selecciona por teclado porque la input ya está enfocada, por lo que el código que está dentro del focus no se ejecutará nuevamente.

Entonces, para solucionar este problema, debemos saber cuándo se desencadena el foco por cualquier evento de mouse / keyboar.

 jQuery("input#autocomplete").focus(function(e) { if(!e.isTrigger) { jQuery(this).autocomplete("search", ""); } e.stopPropagation(); }); 

e.isTrigger es utilizado por jQuery para identificar cuándo el event se ha desencadenado automáticamente o por el usuario.

demostración de trabajo

el menú de sugerencias aparece por segunda vez porque al hacer clic en un elemento en el menú de sugerencias el recuadro de texto recupera el foco; sin embargo, el valor del texto no se actualiza cuando se vuelve a activar el foco. Después de que el recuadro recupera el foco, se activa el menú de sugerencias.

No sé cómo podríamos solucionar esto, pero avíseme si alguno de ustedes se enfrenta al problema similar