【问题标题】:.autocomplete is not a function.autocomplete 不是函数
【发布时间】:2011-08-10 15:19:17
【问题描述】:

我正在实现 Jquery UI 自动完成功能。我有以下代码。

Application.js

 $(function() {
        function log(message) {
            $( "<div/>" ).text( message ).prependTo("#log");
        }

        $("#tags").autocomplete({
            source : function(request, response) {
                $.ajax({
                    url : "/projectlist",
                    dataType : "json",
                    data : {
                        style : "full",
                        maxRows : 12,
                        term : request.term
                    },
                    success : function(data) {
                        var results = [];
                        $.each(data, function(i, item) {
                            var itemToAdd = {
                                value : item,
                                label : item
                            };
                            results.push(itemToAdd);
                        });
                        return response(results);
                    }
                });
            }
        });
    });

项目负责人

 def project_list  
    list=Project.all.map{|i|i.project_name}
    arr= [].concat(list.sort{|a,b| a[0]<=>b[0]}).to_json
    render :json =>arr
  end

_form.html.erb

 <input id = "tags"/>

routes.rb

  match '/projectlist' => 'projects#project_list'

我上面的代码应该做的是,列出项目。但是我在萤火虫中遇到了以下错误。

$("#tags").autocomplete is not a function
[Break On This Error] source : function(request, response) { 

我也尝试按照示例JQuery Ui Autocomplete 进行操作,但没有运气并得到相同的错误:S

【问题讨论】:

  • 一般是没有加载jquery ui js文件的结果。确保已加载 jquery core 和 jquery ui js 文件。
  • 你的 html 中是否包含 jQuery-UI?
  • 我的 _form.html &lt;%= javascript_include_tag 'jquery', 'jquery-ui-1.8.14.custom.min' %&gt; 中有以下内容,但仍然收到相同的错误
  • 也许您没有最新版本的 jquery?我更新了我的版本,它开始按预期工作。

标签: jquery ruby-on-rails ruby-on-rails-3 jquery-ui jquery-ui-autocomplete


【解决方案1】:

我相信您的问题是您将 jquery 和 jquery-ui 文件包含在视图的 BODY 中(在 _form 部分中)。当您调用javascript_include_tag :defaults 时,您可能还在HEAD 中加载了application.js(可能在您的应用程序布局中)。相反,您应该在调用默认值之前调用 jquery 和 ui 文件 。或者,更好的是,通过编辑 config 文件夹中的 application.rb 文件,将它们也包含在默认值中。

【讨论】:

    【解决方案2】:

    正如上面评论中所说,当 jquery 和 jquery ui 文件未正确加载时,通常会出现此错误。

    先使用普通的 HTML 标签来引用它们:

    <script type="text/javascript" src="Content/jquery_core.js"></script>
    <script type="text/javascript" src="Content/jquery_ui.js"></script>
    

    ...并确保在ui文件之前链接核心文件,如上。颠倒顺序也会导致错误。

    【讨论】:

      【解决方案3】:

      看起来虽然你已经包含了 jquery ui,但它并没有被加载。检查您的浏览器控制台是否有 javascript 错误。如果您使用的是 chrome 或 safari,开发人员工具的网络选项卡可能会指示 jquery ui 文件未加载。

      【讨论】:

        【解决方案4】:

        似乎我收到此错误的原因是因为我的“jquery”和“jquery-ui-1.8.14.custom.min”在应用程序布局文件中的排序。感谢您的回复。

        【讨论】:

        • 与其将其添加为“答案”,不如将其作为对您有所帮助的答案的“评论”。如果答案对您有帮助,您应该点击绿色勾号,以便他们获得代表提升,其他用户知道哪个答案是正确的
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-13
        • 2013-11-04
        • 1970-01-01
        • 1970-01-01
        • 2017-11-28
        相关资源
        最近更新 更多