5

Ich versuche, das Feature jQuery autocomplete auf einer ASP MVC 3-Webseite zu verwenden. Leider bekomme ich diesen Fehler immer wieder. Ich habe mir Version 1.9.2 angeschaut, die ich benutze, und es hat die Methode der automatischen Vervollständigung. Ich bin jedoch völlig neu in jQuery und nicht sicher, ob es zu viele Deklarationen in der Kopfzeile, in Konflikt stehenden Bibliotheken oder fehlenden gibt.Uncaught TypeError: Objekt [Objekt Objekt] hat keine Methode 'Autocomplete'

Unten ist der Code aus der Sicht

<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, 
     }); 
    }); 

Full HTML finden Sie hier: http://jsfiddle.net/qpvBv/

+2

Warum enthalten Sie zwei verschiedene Versionen von jQuery? – j08691

+0

teilen Sie Ihre HTML-Code – karthikr

+0

Es gibt eine Reihe von Razor-Syntax drin, so dass die Anzeige nicht richtig funktioniert, aber Sie können die HTML und Javascript hier anzeigen: http://jsfiddle.net/qpvBv/ – NealR

Antwort

9

Sie verwenden mehrere Versionen von jQuery. Fügen Sie nur einen ein und legen Sie ihn an die Spitze aller Skripte.

einschließlich mehrerer Versionen von jQuery, weil nicht funktioniert:

  1. Zuerst jQuery 1.8.3 enthalten. Das ist okay (ish).
  2. Dann schließen Sie jQuery UI 1.9.2. Das ist auch in Ordnung, obwohl ich wahrscheinlich sicherstellen würde, dass die Versionen von jQuery und jQuery UI übereinstimmen. jQuery UI 1.9.2 ist auf dem Objekt 1.8.3 jQuery installiert.
  3. Dann fügen Sie weitere Plugins hinzu, die auch auf dem Objekt 1.8.3 jQuery installiert sind.
  4. Dann schließen Sie jQuery 1.6.4 ein. Abgesehen davon, dass es veraltet ist, überschreibt es das 1.8.3 jQuery Objekt mit seinem eigenen 1.6.4 jQuery Objekt und überschreibt damit alle Plugins auf dem alten.
+2

perfekt, danke für die Erklärung! – NealR

+0

Was passiert, wenn ich nur eine Version habe und immer noch das Problem habe? – Green

+1

@Green: Dann haben Sie höchstwahrscheinlich vergessen, jQuery UI einzuschließen. Wenn das nicht der Fall ist, stellen Sie bitte eine neue Frage. – icktoofay

0

Ich hatte das gleiche Problem und es stellte sich heraus, dass jQuery wurde mehrmals enthalten, genau wie icktoofay sagte.

Ich hatte Probleme herauszufinden, wo es aufgenommen wurde. Ich habe einen einfachen Weg gefunden, wo Sie finden können, wenn Sie die Dateien lokal einbinden, anstatt sie zu importieren, dann können Sie einfach einen Alarm hinzufügen ('JQUERY INCLUDED'); am Anfang des Dokuments.

Wenn eine Seite geladen wird, wird sie eingefroren, sobald Sie die Bibliothek importieren und ein Fenster mit einem entsprechenden Befehl öffnen. Für mich stellte sich heraus, dass es während eines Ajax-Aufrufs war, was ansonsten ein Albtraum für das Debugging gewesen wäre. Hoffentlich hilft das jemand anderem.

-2

installieren

gem 'jquery-ui-rails' 

und setzte in Ihrem application.js

//= require jquery.ui.all 
0

I markiert icktoofay Antwort, aber ich möchte, um es hinzuzufügen, dass Sie den Link nach einem widersprüchlichen Link zum Beispiel setzen sollten :

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

Wenn Sie es wagen, die Reihenfolge dieser beiden Links umzukehren, dann erfüllt die Autovervollständigung Hod kann nicht gesehen werden. Also während Icktoofay sagt, wir sollten es an die Spitze bringen, ich bin der Meinung, dass wir sie auf den Grund legen sollten. Nur zu sagen ....

Verwandte Themen