5

我正在尝试autocomplete在 ASP MVC 3 网页上使用 jQuery 功能。不幸的是,我不断收到此错误。我查看了我正在使用的版本 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

4 回答 4

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.3jQuery对象上。
  3. 然后包含更多插件,也安装在 1.8.3jQuery对象上。
  4. 然后你包括 jQuery 1.6.4。除了过时之外,它还jQuery用自己的 1.6.4jQuery对象覆盖了 1.8.3 对象,并用它覆盖了旧对象上的所有插件。
于 2013-04-07T03:36:52.787 回答
0

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

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

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

于 2013-09-17T16:33:40.090 回答
0

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

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

如果你敢颠倒这两个链接的顺序,那么自动补全方法就看不到了。所以虽然 icktoofay 说我们应该把它放在顶部,但我认为我们应该把它们放在底部。只是说......

于 2014-01-14T18:43:00.367 回答
-2

安装

gem 'jquery-ui-rails'

并放入您的 application.js

//= require jquery.ui.all
于 2013-10-11T16:38:08.867 回答