5

我想在ASP MVC 3網頁上使用jQuery autocomplete功能。不幸的是我不斷收到這個錯誤。我查看了1.9.2版本,它使用了自動完成方法。然而,我對jQuery完全陌生,不確定頭文件中是否有太多的聲明,衝突的庫或缺少的聲明。Uncaught TypeError:Object [object Object] has no method'autocomplete'

下面是從視圖代碼

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

完整的HTML可以在這裏找到:http://jsfiddle.net/qpvBv/

+2

爲什麼你包括兩個不同版本的jQuery? – j08691 2013-04-07 02:47:01

+0

分享你的HTML代碼 – karthikr 2013-04-07 02:50:50

+0

在那裏有一堆Razor語法,所以顯示將無法正常工作,但您可以在這裏查看HTML和Javascript:http://jsfiddle.net/qpvBv/ – NealR 2013-04-07 03:14:15

回答

9

你使用jQuery的多個版本。只包括一個,並將其放在所有腳本的頂部。

包括多個版本的jQuery不起作用,因爲:

  1. 首先,你包括的jQuery 1.8.3。這沒關係(ish)。
  2. 然後你包含jQuery UI 1.9.2。這也可以,儘管我可能會確保jQuery和jQuery UI的版本匹配。 jQuery UI 1.9.2安裝在1.8.3 jQuery對象上。
  3. 然後你包含更多的插件,也安裝在1.8.3 jQuery對象上。
  4. 然後你包含jQuery 1.6.4。除了它已過時外,它還會用自己的1.6.4 jQuery對象覆蓋1.8.3 jQuery對象,並用它覆蓋舊對象上的所有插件。
+2

完美,謝謝您的解釋! – NealR 2013-04-07 03:53:27

+0

如果我只包含一個版本並仍然存在問題該怎麼辦? – Green 2013-07-29 03:41:25

+1

@Green:那麼你很可能忘了包含jQuery UI。如果情況並非如此,請提出一個新問題。 – icktoofay 2013-07-29 03:45:31

0

我有這個相同的問題,事實證明,jQuery被包括多次,就像icktoofay說。

我很難找到它包含在哪裏。我發現了一個簡單的方法來查找,但如果你在本地包含文件而不是導入它們,那麼你可以添加alert('JQUERY INCLUDED');在文檔的頂部。

然後,當一個頁面加載時,它會凍結,每當你導入庫並彈出一個窗口這樣說。對我來說,原來是在ajax調用期間,否則調試將是一場噩夢。希望這會幫助別人。

-2

安裝

gem 'jquery-ui-rails' 

,並在您的application.js

//= require jquery.ui.all 
0

我打上了icktoofay的答案,但我想補充它,你應該把鏈接衝突的鏈接,例如後:

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

如果你敢顛倒這兩個鏈接的順序,那麼自動完成會見無法看到。 所以,雖然icktoofay說我們應該把它放在最前面,但我認爲我們應該把它們放在最後。只是說....

相關問題