【发布时间】:2015-06-06 14:22:30
【问题描述】:
我正在尝试向 MVC5 项目中的输入字段添加自动完成功能。位于 Layout.cshtml 中的表单,我想对“学校”输入字段使用自动完成功能。据我了解,我已采取以下步骤: 1. 我通过 NuGet 包管理器安装了 jQuery UI 小部件。 2.在layout.cshtml的底部,我添加了:
@Scripts.Render("~/bundles/jqueryui")
@Scripts.Render("~/bundles/jquery")`
3。在 bundleConfig.cshtml 我添加了:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
还有:
bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
"~/Content/themes/base/jquery.ui.core.css",
"~/Content/themes/base/jquery.ui.autocomplete.css",
"~/Content/themes/base/jquery.ui.theme.css"));
-
然后,我编写了以下 jQuery 函数:
<script type="text/javascript"> $(function () { $("#search").autocomplete({ source: '@Url.Action("GetSchool")' }); }); </script> -
还有HomeController中的GetSchool函数:
public JsonResult GetSchool(string term) { ReviewDBContext db = new ReviewDBContext(); List<string> schoolsList; schoolsList = db.Schools.Where(x => x.Name.StartsWith(term)).Select(y => y.Name).ToList(); return Json(schoolsList, JsonRequestBehavior.AllowGet); } -
最后,我将查询的 id 添加到 layout.cshtml 页面:
<li class="searchLi"> <input type="text" class="form-control" id="search" autocomplete="on"> </li>
当我运行项目时,我得到了这个错误:
JavaScript runtime error: '$' is undefined
据我了解,要修复此错误,我需要添加对 jQuery 库的引用,因此在标签中我添加了以下链接:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
然后,我得到了这个错误:
Unhandled exception at line 18, column 13 in http://localhost:*****
0x800a01b6 - JavaScript runtime error: Object doesn't support property or method 'autocomplete'
但自动完成功能来自我之前安装的 jQuery UI 包。
注意 1:我在 Internet Explorer 中遇到错误。在 chrome 中没有错误,但自动完成功能不起作用,所以我认为问题与两种浏览器都有关。 注2:我正在尝试使用本教程http://blog.falafel.com/three-steps-use-jquery-ui-asp-net-mvc-5/
也许有人知道谁来解决这个问题? 谢谢!
【问题讨论】:
-
您在以下代码中缺少 Document.Ready;
<script type="text/javascript"> $(function () {- 应该是<script type="text/javascript"> $(document).ready(function () { -
你能分享你的代码的第 18 行吗?而@JammoD,在这种情况下不需要。查看
$(function () {代码行。 -
@AfzaalAhmadZeeshan Aaaah 是的,我没有意识到 Doument 有一条捷径。Ready - 你每天都会学到新东西!
-
@JammoD 这不是问题,可以同时使用 $(document).ready.. 或 $(function ()
-
jQuery库加载完成后是否放置了脚本函数?
标签: jquery asp.net asp.net-mvc asp.net-mvc-4 razor