jQuery UI Autocompletar el uso comienzaWith

Estoy usando el autocompletado de jQuery UI con un origen de datos local ( source: myArray ). Quiero que la función autocompletar proponga solo los resultados que comienzan con la cadena ingresada en lugar de la búsqueda por defecto que no distingue entre mayúsculas y minúsculas . ¿Hay una solución simple para esto o tengo que proporcionar mi búsqueda personalizada / callback de origen?

Mira esto:

Palabra de comienzo del partido:

http://blog.miroslavpopovic.com/jqueryui-autocomplete-filter-words-starting-with-term

Él anula el método de filtro de autocompletar. Yo uso esto y funciona bien.

 // Overrides the default autocomplete filter function to search only from the beginning of the string $.ui.autocomplete.filter = function (array, term) { var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(term), "i"); return $.grep(array, function (value) { return matcher.test(value.label || value.value || value); }); }; 

Palabra del partido:

El partido comienza con cualquier palabra en la cadena.

por ejemplo, “LHR london” se corresponde con “london”

 var matcher = new RegExp("\\b" + $.ui.autocomplete.escapeRegex(term), "i"); 

\ b afirmar posición en un límite de palabra (^ \ w | \ w $ | \ W \ w | \ w \ W)

Actualmente lo he hecho de esta manera, no estoy seguro de si hay una mejor solución:

 source: function(request, response) { var filteredArray = $.map(orignalArray, function(item) { if( item.value.startsWith(request.term)){ return item; } else{ return null; } }); response(filteredArray); }, 

Este enfoque también permitió imponer un límite (por ejemplo, 10 elementos) sobre la cantidad de elementos que se mostrarán.

Ingresé al código de Jqueryui y lo cambié allí.

Si miras en la sección autocompletar, verás la siguiente línea:

 filter:function(a,b){var g=new RegExp(d.ui.autocomplete.escapeRegex(b),"i") 

Modifíquelo a lo siguiente (tenga cuidado, este es un cambio global):

 filter:function(a,b){var g=new RegExp("^" + d.ui.autocomplete.escapeRegex(b),"i") 

Aquí hay una manera ligeramente diferente de hacer una búsqueda sensible a mayúsculas y minúsculas. Tenga en cuenta la falta de “i” en la creación de la expresión regular en el segundo ejemplo, que es lo que causa la insensibilidad de mayúsculas y minúsculas en la implementación predeterminada.

sin distinción de mayúsculas y minúsculas

  $('#elem').autocomplete({ source: array }); 

distingue mayúsculas y minúsculas:

  $('#elem').autocomplete({ source: function(request, response) { var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term, "")); var data = $.grep( array, function(value) { return matcher.test( value.label || value.value || value ); }); response(data); } }); 

puede usar la misma manera en Jquery UI Ejemplos de autocompletado

  

O de otra manera con el uso $.map método $.map no $.grep

  
 source: function( request, response ) { var t = jQuery.grep(t, function(a){ var patt = new RegExp("^" + request.term, "i"); return (a.match(patt)); }); response(t); },