2012-09-14 8 views
7

link bawić: http://jsfiddle.net/nEapJ/ (praca)jquery-ui autouzupełnianie: ustawić źródło o funkcji wywołania zwrotnego nie działa

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

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

Ten kod działa, ale gdy chcę ustawić źródło przez funkcję zwrotną następnie To nie działa

link, aby bawić: http://jsfiddle.net/B3RWj/ (nie pracuje)

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

po wpisaniu 'a' następnie jej gi ve a, b, c jako wynik.

Więc, czego mi brakuje?

dzięki, z góry.

Odpowiedz

2

W funkcji wywołania zwrotnego jest to do ciebie, aby zrobić filtrowanie ..

Wyciąg z documentation:

Trzeci wariant, wywołanie zwrotne, zapewnia największą elastyczność i mogą być wykorzystane do podłącz dowolne źródło danych do autouzupełniania. Callback otrzymuje dwa argumenty:

Obiekt żądania, z jedną właściwością o nazwie "termin", która oznacza do wartości aktualnie wprowadzanej w polu tekstowym. Na przykład, gdy użytkownik wpisał "nowe yo" w polu miasta, pojęcie autouzupełniania będzie równe "nowe yo". Wywołanie zwrotne odpowiedzi, które oczekuje pojedynczego argumentu na zawierają dane sugerujące użytkownikowi. Te dane powinny być filtrowane w oparciu o podany termin i mogą być w dowolnym z formatów opisanych powyżej dla prostych danych lokalnych (String-Array lub Object-Array z etykieta/wartość/obie właściwości). Jest to ważne, gdy udostępniasz niestandardowe wywołanie zwrotne źródła, aby obsługiwać błędy podczas żądania. Zawsze musisz zadzwonić do wywołania zwrotnego odpowiedzi, nawet jeśli napotkasz błąd. Ten zapewnia, że ​​widget zawsze ma prawidłowy stan.

+2

Myślę, że autouzupełnianie jquery-ui auto-filtr przez wpisanie charcters przez dopasowanie z kluczem etykiety w danym źródle .. –

+1

faktycznie, to auto filtry tylko dla * lokalnego źródła * opcja –

1

zobaczyć kod:

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

Jeśli chcesz korzystać z funkcji oddzwaniania zamiast tablicy źródłowej lub sznurka trzeba dodać response($.ui.autocomplete.filter(items, request.term));

w swojej funkcji:

source : function(request, response){}

Oto, co jest autouzupełnieniem e robi to, gdy definiujesz swoje źródło jako tablicę lub łańcuch, ale w przypadku wywołań zwrotnych musisz to dodać.

Powiązane problemy