8

Poprawnie przesłania w pierwszym znalezionym autouzupełnieniu, ale nic nie robi z resztą. Zamiast tego ładuje oryginalną metodę _renderitem, którą można zobaczyć pod adresem https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.autocomplete.js#L449.Korekta przechyłki jQuery UI metoda autouzupełniania renderItem wiele razy

$(".someClassWithMultipleItemsOnDOM").autocomplete({ 
     delay:500, 
     minLength:2, 
     source:path" 
     ..... 
}).data("autocomplete")._renderItem = function(ul, item) { 

góry dzięki

Odpowiedz

20

Istnieje obejście tego problemu:

var autoc = { 
    delay: 500, 
    minLength: 2, 
    source: path, 
    ..... 
}; 

var renderItem = function (ul, item) { 
    return $("<li></li>") 
     .data("item.autocomplete", item) 
     .append("<a>" + item.label + "<br/>" + item.desc + "</a>") 
     .appendTo(ul); 
}; 

$(".someClassWithMultipleItemsOnDOM").each(function (i) { 
    $(this).autocomplete(autoc).data("autocomplete")._renderItem = renderItem; 
} 
+0

co jest 'autoc'? Nie ma mowy, że działa – fmpdmb

+2

To jest [JavaScript Object Literal] (http://www.dyn-web.com/tutorials/obj_lit.php). Oczywiście musielibyśmy pozbyć się "...." i ostatniego przecinka, aby ten przykład zadziałał. – tomc

+1

@tomc - właśnie uratowałeś mi GODZINę dodatkowej pracy. Czy użytkownicy jquery-ui mają teraz obejście tego problemu dla wielu elementów autouzupełniania? – DevlshOne

9

Można zastąpić _renderItem

$.ui.autocomplete.prototype._renderItem = function (ul, item) { ... }; 
+0

Zaleca się robić w ten sposób? –

+1

Jest to sposób na zrobienie tego. Nie zalecane ani zalecane. – Damax