未捕获的TypeError:对象[object Object]没有方法'autocomplete'

时间:2013-04-07 02:46:03

标签: jquery jquery-ui jquery-autocomplete jquery-ui-autocomplete

我正在尝试在ASP MVC 3网页上使用jQuery autocomplete功能。不幸的是我一直收到这个错误。我查看了我正在使用的1.9.2版,它确实有自动完成方法。但是,我对jQuery完全不熟悉,并且不确定标头中是否有太多声明,冲突的库或缺少的库。

以下是视图中的代码

<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/

4 个答案:

答案 0 :(得分: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对象,用它覆盖旧对象上的所有插件。

答案 1 :(得分:0)

我遇到了同样的问题,结果发现jQuery被多次包含,就像icktoofay说的那样。

我很难找到它被包含在哪里。我找到了一种简单的方法来查找,但如果您在本地包含文件而不是导入它们,那么您只需添加警报('JQUERY INCLUDED');在文档的顶部。

然后当页面加载时,无论何时导入库并弹出一个窗口,它都会冻结。对我来说,事实证明是在ajax调用期间,否则调试将是一场噩梦。希望这会帮助其他人。

答案 2 :(得分:0)

我标记了icktoofay的答案,但我想补充一点,你应该在链接之后放置链接,例如:

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

如果您敢于颠倒这两个链接的顺序,则无法看到自动完成方法。 因此,虽然icktoofay说我们应该把它放在最顶层,但我认为我们应该把它放在最底层。只是说......

答案 3 :(得分:-2)

安装

gem 'jquery-ui-rails'

并输入您的application.js

//= require jquery.ui.all