【问题标题】:Auto-Complete input field in asp.net MVC5asp.net MVC5中的自动完成输入字段
【发布时间】: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"));
  1. 然后,我编写了以下 jQuery 函数:

    <script type="text/javascript">
    $(function () {
        $("#search").autocomplete({
            source: '@Url.Action("GetSchool")'
        });
    });
    </script>
    
  2. 还有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);
    }
    
  3. 最后,我将查询的 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; &lt;script type="text/javascript"&gt; $(function () { - 应该是 &lt;script type="text/javascript"&gt; $(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


【解决方案1】:

您似乎对 jQuery 库有重复的引用。根据您的代码,您的视图已经包含

的 jQuery 引用
@Scripts.Render("~/bundles/jquery") 

在出现错误后,您再次添加了 jQuery 的外部链接。我认为该错误是由其他原因引起的。

我相信原因是 jQuery 和 jQueryUI 的 @Scripts.Render 顺序不正确。 jQuery 必须高于 jQueryUI。所以试试这个吧。

以下替换:

@Scripts.Render("~/bundles/jqueryui") 
@Scripts.Render("~/bundles/jquery")

与:

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryui") 

并删除jQuery的外部引用。

希望对你有帮助!!

【讨论】:

  • 当我删除对 j​​Query 的外部引用时: 我收到此错误:0x800a1391 - JavaScript 运行时错误:' $' 未定义
  • 交换引用位置怎么样?
  • 不会改变任何东西 :-(
  • 然后分享您的完整页面来源
猜你喜欢
  • 2015-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多