5

Próbuję użyć funkcji jQuery autocomplete na stronie internetowej ASP MVC 3. Niestety ciągle otrzymuję ten błąd. Przyjrzałem się wersji 1.9.2, której używam, i ma ona metodę autouzupełniania. Jestem jednak całkowicie nowy w jQuery i nie jestem pewien, czy jest zbyt wiele deklaracji w nagłówku, sprzecznych bibliotekach lub brakujących.Uncaught TypeError: Object [object Object] nie ma metody "autouzupełniania"

Poniżej znajduje się kod z widoku

<link href="../../Content/jquery-ui-1.9.2.custom.css" rel="stylesheet"> 

<script src="http://code.jquery.com/jquery-1.8.3.js" type="text/javascript"></script> 
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.tablesorter.min.js")" type="text/javascript"></script> 

<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.js"></script> 
<script type="text/javascript"> 

    $(document).ready(function() { 
     $('#BankName').autocomplete('@Url.Action("GetBanks", "AgentTransmission")', { 
      dataType: 'json', 
      parse: function(data) { 
       var rows = new Array(); 
       for(var i=0; i<data.length; i++){ 
        rows[i] = { data:data[i], value:data[i].SignalName, result:data[i].SignalName }; 
       } 
       return rows; 
      }, 
      formatItem: function(row, i, n) { 
       return row.SignalName + ' - ' + row.Description; 
      }, 
      width: 300, 
      mustMatch: true, 
     }); 
    }); 

Pełna html można znaleźć tutaj: http://jsfiddle.net/qpvBv/

+2

Dlaczego dołączasz dwie różne wersje jQuery? – j08691

+0

udostępnij swój kod html – karthikr

+0

Jest tam kilka składni Razor, więc wyświetlacz nie będzie działał poprawnie, ale możesz zobaczyć kod HTML i JavaScript tutaj: http://jsfiddle.net/qpvBv/ – NealR

Odpowiedz

9

Używasz wielu wersji jQuery. Uwzględnij tylko jeden i umieść go na szczycie wszystkich skryptów.

tym wielu wersji jQuery nie działa, ponieważ:

  1. Najpierw obejmują jQuery 1.8.3. To jest w porządku (ish).
  2. Następnie dołączasz jQuery UI 1.9.2. Jest to również w porządku, chociaż prawdopodobnie upewniłem się, że wersje jQuery i jQuery UI są zgodne. jQuery UI 1.9.2 jest zainstalowany na obiekcie 1.8.3 jQuery.
  3. Następnie dodajesz więcej wtyczek, również zainstalowanych na obiekcie 1.8.3 jQuery.
  4. Następnie należy dołączyć jQuery 1.6.4. Oprócz tego, że jest nieaktualny, nadpisuje obiekt 1.8.3 jQuery swoim własnym obiektem 1.6.4 jQuery, zastępując przy tym wszystkie stare wtyczki.
+2

idealny, dziękuję za wyjaśnienie! – NealR

+0

Co jeśli mam tylko jedną wersję i nadal mam problem? – Green

+1

@Green: Najprawdopodobniej zapomniałeś dołączyć interfejsu jQuery. Jeśli tak nie jest, poproś o nowe pytanie. – icktoofay

0

Miałem ten sam problem i okazało się, że jQuery był dołączany wiele razy, tak jak powiedział icktoofay.

Miałem problem ze znalezieniem miejsca, w którym było ono włączone. Znalazłem łatwy sposób, aby znaleźć dokąd, jeśli umieścisz pliki lokalnie zamiast ich importowania, możesz po prostu dodać alert ("JQUEER INCLUDED"); u góry dokumentu.

Następnie, gdy strona ładuje się, blokuje się, gdy importujesz bibliotekę i pojawia się okienko z informacją o tym. Dla mnie okazało się, że podczas połączenia ajaxowego byłaby to koszmar do debugowania w przeciwnym razie. Mam nadzieję, że to pomoże komuś innemu.

-2

zainstalować

gem 'jquery-ui-rails' 

i umieścić w swoim application.js

//= require jquery.ui.all 
0

I oznaczony odpowiedź icktoofay, ale chcę dodać do tego, że należy umieścić link po linku np konflikcie :

<script src="~/fullcalendar/fullcalendar.min.js"></script> 
<script src="~/Scripts/jquery-ui.js"></script> 

Jeśli odważysz się odwrócić kolejność tych dwóch linków, autouzupełnianie jest spełnione hod nie można zobaczyć. Podczas gdy icktoofay mówi, że powinniśmy umieścić to na górze, jestem zdania, że ​​powinniśmy umieścić je na samym dole. Po prostu mówię ...

Powiązane problemy