2012-09-14 17 views
7

enlace a tocar el violín: http://jsfiddle.net/nEapJ/ (de trabajo)jquery-ui: establecer un origen por la función de devolución de llamada no funciona

var items = [{ 
    label : 'a', 
    value : 'a', 
},{ 
    label : 'b', 
    value : 'b', 
},{ 
    label : 'c', 
    value : 'c', 
}]; 

$('input').autocomplete({ 
    source : items 
});​ 

Este código funciona, pero cuando quiero para configurar la fuente por la función de devolución de llamada continuación No está funcionando

enlace a tocar el violín: http://jsfiddle.net/B3RWj/ (no funciona)

$('input').autocomplete({ 
    source : function(request, response){ 
      response(items); 
      } 
});​ 

cuando el tipo i, 'a' entonces su gi ve a, b, c como resultado.

Entonces, ¿qué es lo que me falta?

gracias, de antemano.

Respuesta

2

En la función de devolución de llamada le toca a usted para hacer el filtrado ..

Extracto de documentation:

La tercera variación, la devolución de llamada, proporciona la mayor flexibilidad y se puede utilizar para conecta cualquier fuente de datos a Autocompletar. La devolución de llamada obtiene dos argumentos:

Un objeto de solicitud, con una única propiedad llamada "término", que hace referencia al valor actualmente en la entrada de texto. Por ejemplo, cuando el usuario ingresó "nuevo yo" en un campo de ciudad, el término Autocompletar será igual a "nuevo yo". Una devolución de llamada de respuesta, que espera un único argumento en contiene los datos para sugerir al usuario. Estos datos deben filtrarse según el término proporcionado, y pueden encontrarse en cualquiera de los formatos descritos arriba para datos locales simples (String-Array o Object-Array con label/value/both properties). Es importante cuando se proporciona una devolución de llamada de origen personalizada para manejar los errores durante la solicitud. Siempre debe llamar al la devolución de llamada de respuesta incluso si encuentra un error. Este garantiza que el widget siempre tenga el estado correcto.

+2

Creo que, jquery-ui autocompleta el filtro automático por los caracteres ingresados ​​al hacer coincidir con la clave de la etiqueta en una fuente determinada ... –

+1

en realidad, solo filtros automáticos para * fuente local * opción –

1

ver el código:

$('input').autocomplete({ 
    source : function(request, response){ 
     var term = request.term; 
     var result = []; 

     //make your code here to filter the item by term. 
     //put them into the result array such as. 

     response(result);//this will show in the selection box. 
    } 
});​ 
0

Si desea utilizar la función de devolución de llamada en lugar de una matriz de origen o cadena que tenga que añadir response($.ui.autocomplete.filter(items, request.term));

en el que su función:

source : function(request, response){}

Esto es lo autocompletado e lo hace cuando define su fuente como una matriz o cadena, pero para las devoluciones de llamada debe agregar esto.

Cuestiones relacionadas