【问题标题】:$("#Name").autocomplete is not a function$("#Name").autocomplete 不是函数
【发布时间】:2011-06-22 14:48:13
【问题描述】:

当我运行此页面时,我在 firebug 中看到错误

<script type="text/javascript">
$(document).ready(function () {
var url = '/Tag/TagName';
$('#Name').autocomplete(url, {
minChars: 1,
multiple: true,
formatResult: function (row) {
return row[0].replace(/(<.+?>)/gi, '');
}
}).result(function (event, data, formatted) {
alert(!data ? "No match!" : "Selected: " + formatted);
});
})
</script> 

错误是:

$("#Name").autocomplete is not a function 

我在这个文件里也有

  <title>@ViewBag.Title</title>
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
    <script src=@Url.Content("~/Scripts/jquery-ui-1.8.11.js")" type="text/javascript"></script>

 <div class="editor-label">
            @Html.LabelFor(model => model.Name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Name) @Html.ValidationMessageFor(model => model.Name) 
        </div>

这个错误的根源是什么?

最好的问候

编辑

非,是

<script src=@Url.Content("~/Scripts/jquery-ui-1.8.11.js")" type="text/javascript"></script>

但我还有另一个错误:

$("#Name").autocomplete(url, {minChars: 1, multiple: true, formatResult: function (row) {return row[0].replace(/(<.+?>)/gi, "");}}).result is not a function

如果这有帮助:

我在 _Layout.cshtml 中拥有的每个脚本库绑定

_Layout.cshtml

【问题讨论】:

  • 2 件事,1.) 你在这个页面上加载了 jQuery UI 吗? (您需要它来调用 .autocomplete(...) 和 2。)$("#Name") 我认为“名称”实际上是您想要的元素的 ID,因为 #(哈希)表示法用于按 ID 而非名称查找元素。例如应该是$("#id")
  • 2) 这个输入的id和name都是Name,所以这个没有问题。 1) 是的,现在(在@Jon 回答之后)我有:

标签: jquery asp.net-mvc-3 razor


【解决方案1】:

直接原因是你没有加载 jQuery 自动完成插件(错误信息很清楚)。

根本原因是您在src= 之后缺少开场白:

<script src=@Url.Content("~/Scripts/jquery-ui-1.8.11.js")"

【讨论】:

  • 好吧,你说得对,但现在我得到错误:$("#Name").autocomplete(url, {minChars: 1, multiple: true, formatResult: function (row) {return row [0].replace(/(<.>)/gi, "");}}).result 不是函数
  • @user278618:那是因为错误消息告诉您没有result 成员。您从哪里获得此代码?
  • 来自stackoverflow的@Jon:stackoverflow.com/questions/6401594/…
  • @Jon - 那么我需要改变什么才能让这段代码工作?我可以删除此警报 - 没有必要。如果你在问题答案上发帖,我会给你赏金:)
  • @user278612:很抱歉,我现在无法研究这个。稍后会回复您。
【解决方案2】:

您似乎没有包含 jQuery Autocomplete 插件。

http://docs.jquery.com/Plugins/autocomplete

编辑:jQuery UI 包含一个自动完成功能,这就是您在此处使用的功能。此功能与 jQuery Autocomplete 插件不同。它的工作方式不同。您在此处使用的代码引用了该插件,但您调用的自动完成功能是 jQuery UI 中包含的功能。您应该查看 jQuery UI 自动完成功能,如果这不是您所需要的,您可以包含 jQuery Autocomplete 插件脚本并使用它来代替,保留您现有的代码。确保在 jQuery UI 之后添加插件脚本文件,这样它就不会被覆盖或下载新版本的 jQuery UI,但自动完成功能已删除。

jQuery UI 自动完成 http://jqueryui.com/demos/autocomplete/

jQuery 自动完成插件 http://docs.jquery.com/Plugins/autocomplete

<script type="text/javascript" src="http://dev.jquery.com/view/trunk/plugins/autocomplete/jquery.autocomplete.js"></script>

jQuery UI 插件实例

$( "#Name" ).autocomplete({
    source: url,
    minLength: 1,
    select: function( event, ui ) {
        log( ui.item ?
            "Selected: " + ui.item.value + " aka " + ui.item.id :
            "Nothing selected, input was " + this.value );
    }
});

【讨论】:

    【解决方案3】:

    你链接图书馆了吗?:

    <script type="text/javascript" src="http://dev.jquery.com/view/trunk/plugins/autocomplete/jquery.autocomplete.js"></script>
    

    【讨论】:

    • 我已经添加了它并且:$("#Name").autocomplete(url, {minChars: 1, multiple: true, formatResult: function (row) {return row[0].replace (/(<.>)/gi, "");}}).result 不是函数
    • 您可以在此处找到一个复杂的示例:jquery.bassistance.de/autocomplete/demo(只需查看源代码,可能还需要添加其他内容。)。还要检查你的 jQuery 版本(你也链接了吗?)
    • 我有一个默认的 asp.net MVC 3 模板,带有 jquery-1.5.1-vsdoc.js jquery-1.5.1.js jquery-1.5.1.min.js jquery-ui- 1.8.11.js 和 jquery-ui-1.8.11.min.js 库
    • 感谢您的链接,但我要让新手从中获得一些东西
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    相关资源
    最近更新 更多