2009-03-04 10 views
5

Używam rozszerzenia autouzupełniania jquery 1.0.2 przez Dylana Verheul, Dan G. Switzer, Anjesh Tuladhar, Jörn Zaefferer. Próbuję wykonać moją własną funkcję zwrotną, gdy wywoływane są funkcje .show() i .hide() z kontrolki autouzupełniania. Nie znalazłem żadnego sposobu, aby rzeczywiście rozpoznać funkcję zwrotną. Jeśli ktoś jest obeznany z tą kontrolą i może mi pomóc, byłbym bardzo wdzięczny.Jak dołączyć niestandardową funkcję wywołania zwrotnego do rozszerzenia autouzupełniania jquery?

Odpowiedz

8

Niestety, nie mam łatwej odpowiedzi na twoje pytanie, sprawdziłem kod źródłowy wtyczki i nie znalazłem żadnego mechanizmu pozwalającego ci na to, czego chcesz. Myślę, że będziesz musiał sam zaktualizować tę wtyczkę, aby działała tak, jak chcesz.

Chodzi o to, aby dodać swoje wywołania zwrotne do parametru options, a następnie sprawić, by wtyczka korzystała z tych wywołań zwrotnych. Najpierw musisz zmodyfikować kod wtyczki. Przejdź do funkcji, która tworzy klasę odpowiedzialną za pokazywanie/ukrywanie kontrolę autouzupełniania:

$.Autocompleter.Select = function (options, input, select, config) { 

Jeśli przewinąć w dół, widać, że ta funkcja zwraca obiekt z show() i hide() metod. Możesz dodać następujący kod:

hide: function() { 
    ... 
    options.showCallback && options.showCallback(); // Invoke callback function if set 
}, 
... 
show: function() { 
    ... 
    options.hideCallback && options.hideCallback(); // Invoke callback function if set 
}, 

Wreszcie, podczas tworzenia autouzupełniania, należy dodać swoje wywołania zwrotne do opcji:

$("#myTextBox").autocomplete("http://...", 
{ 
    showCallback : function() { /* do what you want here */ }, 
    hideCallback : function() { /* do what you want here */ } 
}); 

nie testowano w ogóle, to po prostu szybki i brudny roztwór . Mam nadzieję, że to pomoże.

+0

dzięki ybo, spróbuj! –

+1

to działa! jesteś niesamowity! Rzeczywiście mam funkcję wyświetlania i ukrywania połączeń zwrotnych, którą chcę nazwać wstępnie zdefiniowaną, więc po prostu robię showCallback: myShow, hideCallback: myHide i to działa, dzięki jeszcze raz! –

+0

Świetne;) Możesz spróbować przesłać pomysł/kod do autorów, mogą być zainteresowani. – ybo

Powiązane problemy