2

我显然遗漏了一些东西,但是在尝试将自动完成添加到文本框时,我不断收到此消息:.autocomplete is not a function

_Layout(仅头部):

<head>
 <meta charset="utf-8" />
 <title>@ViewBag.Title - My ASP.NET MVC Application</title>
 <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
 <meta name="viewport" content="width=device-width" />
 <link href="../../Content/themes/base/jquery.ui.all.css" rel="stylesheet" type="text/css" />
 <script src="../../Scripts/jquery-1.6.2.min.js" type="text/javascript"></script>
 <script src="../../Scripts/jquery-ui-1.8.11.js" type="text/javascript"></script>
 @Styles.Render("~/Content/themes/base/css", "~/Content/css")
 @Scripts.Render("~/bundles/modernizr")

指数:

    <script type="text/javascript">
$(function () {
    $("#searchTerm").autocomplete({
       source: "/Search/AutocompleteSuggestions",
       minLength: 3,
       select: function (event, ui) {
             if (ui.item) {
                $("#searchTerm").val(ui.item.value);
                $("form").submit();
             }
       }
      });
});

@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl }))'
{
<input id="searchTerm" name="searchTerm" type="text" />
<input type="submit" value="Go" />
}

我很确定 Jquery 插件没有正确加载,但我不明白为什么!

4

4 回答 4

4

在挠了一个小时左右后,我发现了问题,所以这里是:

  1. 您必须将您的 javascript 添加到 @section Scripts {} 部分
  2. 我必须包含以下包:@Scripts.Render("~/bundles/jqueryval") @Scripts.Render("~/bundles/jqueryui")

MVC4 附带了正确的 JQuery 文件,并且默认配置已经包含了必要的包。

希望这对其他人有帮助。

于 2012-06-15T19:30:35.330 回答
1

您似乎没有包含定义方法的jquery-ui-1.8.11.js脚本autocompete。您只包括jquery-1.6.2.min.js了哪些是必需的,但还不够。此外,我建议您使用捆绑包将所需的脚本和样式组合并缩小到一个文件中,从而减少带宽并缩短页面加载时间:

<head>
    <meta charset="utf-8" />
    <title>@ViewBag.Title - My ASP.NET MVC Application</title>
    <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
    <link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/css")" rel="stylesheet" type="text/css" />
    <link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/themes/base/css")" rel="stylesheet" type="text/css" />
    <script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>
    <meta name="viewport" content="width=device-width" />
</head>
于 2012-06-10T17:01:37.437 回答
0

在我的情况下,文件BundleConfig.cs正在注册

bundles.Add(new ScriptBundle("~/bundles/jquery").Include("~/Scripts/jquery-{version}.js")); 

它会导致 JQuery UI 出现问题。我将其更改为:

bundles.Add(new ScriptBundle("~/bundles/jquery").Include("~/Scripts/jquery-1.7.1.min.js")); 

它有效。

于 2012-10-05T16:37:43.760 回答
0

我很确定 Jquery 插件没有正确加载

你怎么知道 jquery 插件没有正确加载?首先,您应该通过直接组合引用脚本/样式并使用System.Web.Optimizationhelpers( @Scripts, @Styles..) 来停止搞砸事情。

使用任何一种方法。我建议您首先使用直接加载所需的 css 和脚本,Url.Content然后查看一切正常,如果可以,然后将它们完全替换为@Scriptsand @Styles

要了解有关捆绑/缩小的更多信息,请参阅此链接

http://ofps.oreilly.com/titles/9781449320317/ch_ClientOptimization.html#_putting_asp_net_mvc_to_work

于 2012-06-10T17:16:12.163 回答