5

Tôi đang cố sử dụng tính năng jQuery autocomplete trên trang web ASP MVC 3. Thật không may tôi tiếp tục nhận được lỗi này. Tôi đã xem xét phiên bản 1.9.2 mà tôi đang sử dụng và nó có phương thức tự động hoàn thành. Tôi, tuy nhiên, hoàn toàn mới với jQuery và không chắc chắn nếu có quá nhiều khai báo trong tiêu đề, thư viện xung đột, hoặc thiếu những cái.Loại không bắt buộcLỗi: Đối tượng [đối tượng] không có phương thức 'tự động hoàn thành'

Dưới đây là mã từ cái nhìn

<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 có thể được tìm thấy ở đây: http://jsfiddle.net/qpvBv/

+2

Tại sao bạn bao gồm hai phiên bản khác nhau của jQuery? – j08691

+0

chia sẻ mã html của bạn – karthikr

+0

Có một loạt cú pháp Razor trong đó để hiển thị không hoạt động đúng cách, nhưng bạn có thể xem HTML và Javascript tại đây: http://jsfiddle.net/qpvBv/ – NealR

Trả lời

9

Bạn đang sử dụng nhiều phiên bản của jQuery. Chỉ bao gồm một và đặt nó ở đầu tất cả các tập lệnh.

Bao gồm nhiều phiên bản của jQuery không hoạt động vì:

  1. Trước tiên, bạn bao gồm jQuery 1.8.3. Điều này không sao (ish).
  2. Sau đó, bạn bao gồm jQuery UI 1.9.2. Điều này cũng được, mặc dù tôi có thể chắc chắn rằng các phiên bản của jQuery và jQuery UI phù hợp. jQuery UI 1.9.2 được cài đặt trên đối tượng 1.8.3 jQuery.
  3. Sau đó, bạn bao gồm nhiều plugin hơn, cũng được cài đặt trên đối tượng 1.8.3 jQuery.
  4. Sau đó, bạn bao gồm jQuery 1.6.4. Ngoài việc nó đã lỗi thời, nó sẽ ghi đè đối tượng 1.8.3 jQuery với đối tượng 1.6.4 jQuery của riêng nó, ghi đè tất cả các plugin trên trình cắm cũ với nó.
+2

hoàn hảo, cảm ơn lời giải thích! – NealR

+0

Điều gì sẽ xảy ra nếu tôi chỉ có một phiên bản được đưa vào và vẫn gặp sự cố? – Green

+1

@Green: Sau đó, bạn có thể quên bao gồm jQuery UI. Nếu không phải vậy, hãy hỏi một câu hỏi mới. – icktoofay

0

Tôi đã gặp vấn đề tương tự này và hóa ra jQuery đã được bao gồm nhiều lần giống như icktoofay đã nói.

Tôi đã gặp khó khăn trong việc tìm ra nơi nó đã được đưa vào mặc dù. Tôi tìm thấy một cách dễ dàng để tìm nơi mặc dù, nếu bạn đang bao gồm các tập tin cục bộ thay vì nhập chúng thì bạn chỉ có thể thêm cảnh báo ('JQUERY INCLUDED'); ở đầu tài liệu.

Sau đó, khi một trang đang tải nó sẽ đóng băng bất cứ khi nào bạn nhập thư viện và bật lên một cửa sổ nói như vậy. Đối với tôi nó hóa ra là trong một cuộc gọi ajax mà sẽ có được một cơn ác mộng để gỡ lỗi khác. Hy vọng rằng điều này sẽ giúp người khác ra ngoài.

-2

cài đặt

gem 'jquery-ui-rails' 

và đưa vào application.js bạn

//= require jquery.ui.all 
0

tôi đánh dấu lên câu trả lời icktoofay nhưng tôi muốn thêm vào nó mà bạn nên đặt liên kết sau khi một liên kết mâu thuẫn ví dụ :

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

Nếu bạn có thể đảo ngược thứ tự của hai liên kết này, hãy tự động hoàn thành hod không thể được nhìn thấy. Vì vậy, trong khi icktoofay nói rằng chúng ta nên đặt nó ở phía trên, tôi có ý kiến ​​rằng chúng ta nên đặt chúng ở phía dưới. Chỉ cần nói ....