2012-09-14 11 views
7

link per giocherellare: http://jsfiddle.net/nEapJ/ (di lavoro)jquery-ui: fonte fissato dalla funzione di callback non funziona

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

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

Questo codice funziona, ma quando voglio impostare fonte dalla funzione di callback poi Non funziona

link per giocherellare: http://jsfiddle.net/B3RWj/ (non funzionante)

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

quando digito, 'a' allora la sua gi ve a, b, c come risultato.

Quindi, cosa mi manca?

grazie, in anticipo.

risposta

2

nella funzione di callback tocca a voi per fare il filtraggio ..

Estratto documentation:

La terza variante, la richiamata, fornisce la massima flessibilità, e può essere utilizzato per connettere qualsiasi origine dati a Completamento automatico. Il callback riceve due argomenti:

Un oggetto di richiesta, con una singola proprietà denominata "term", che fa riferimento a al valore attualmente nell'input di testo. Ad esempio, quando l'utente immette "nuovo anni" in un campo città, il termine di completamento automatico sarà uguale a "nuovo anni". Una callback di risposta, che prevede che un singolo argomento a contenga i dati da suggerire all'utente. Questi dati devono essere filtrati in base al termine fornito e possono trovarsi in uno dei formati descritti sopra per dati locali semplici (Array di stringhe o Array di oggetti con etichetta/valore/entrambe le proprietà). È importante quando si fornisce una richiamata di origine personalizzata per gestire gli errori durante la richiesta. È sempre necessario chiamare la richiamata della risposta anche se si verifica un errore. Questo assicura che il widget abbia sempre lo stato corretto.

+2

penso, jquery-ui filtro automatico completo di caratteri digitati facendo corrispondere la chiave dell'etichetta in una determinata fonte. –

+1

in realtà, si auto filtro solo per l'opzione * local source * –

1

vedere il codice:

$('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

Se si desidera utilizzare la funzione di callback invece di una matrice di origine o di una stringa si deve aggiungere response($.ui.autocomplete.filter(items, request.term));

nella vostra funzione:

source : function(request, response){}

Questo è il completamento automatico fa quando definisci la tua fonte come una matrice o una stringa, ma per i callback devi aggiungerla.

Problemi correlati