【问题标题】:TypeError: $(...).autocomplete(...).data(...) is undefinedTypeError: $(...).autocomplete(...).data(...) 未定义
【发布时间】:2015-06-19 09:01:18
【问题描述】:

我在使用 jQuery 自动完成时发现错误。

控制台中的这个通知错误是

TypeError: $(...).autocomplete(...).data(...) 未定义 }).data("ui-autocomplete")._renderItem = function(ul, item) {

代码:

Site Name <br/>

<input type="text" name="site_name" id="site_name"><br/>

<input type="hidden" name="site_id" id="site_id">

$().ready(function () {
    $("#site_name").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: "get_site2.php",
                dataType: "json",
                data: {
                    term: request.term
                },
                beforeSend: function () { // add this
                    showLoading("remove");
                    console.log("remove");
                },
                success: function (data) {
                    response(data);
                }
            });
        },
        minLength: 2,
        select: function (event, ui) {
            $("#site_name").val(ui.item.label);
            $("#site_id").val(ui.item.name);
            return false;
        },
        open: function () {
            $(this).removeClass("ui-corner-all").addClass("ui-corner-top");
        },
        close: function () {
            $(this).removeClass("ui-corner-top").addClass("ui-corner-all");
        }
    }).data("ui-autocomplete")._renderItem = function (ul, item) {
        return $("<li></li>")
            .data("ui-autocomplete-item", item)
            .append("<a>" + item.label + "</a>")
            .appendTo(ul);
    };

});

我很困惑,我已经搜索并尝试了this question,但它没有解决它。

【问题讨论】:

  • 您收到错误消息,因为 autocomplete 小部件构造函数未正确返回。这很可能是因为$("#site_name") 没有选择正确的 HTML 元素。尝试使用正确的就绪处理程序签名,并确保 $("#site_name") 选择正确的 &lt;input&gt; 标记

标签: javascript jquery json jquery-ui autocomplete


【解决方案1】:

抱歉,这个修复可能有点晚了......但是对于遇到这个问题的其他人来说。

改变一下

}).data("ui-autocomplete")._renderItem = function (ul, item) {

})._renderItem = function (ul, item) {

这应该可以解决问题。

在某些情况下,它看起来像这样

.autocomplete().data("uiAutocomplete")._renderItem =  function( ul, item ) 

改成

.autocomplete()._renderItem = function( ul, item ) 

【讨论】:

    【解决方案2】:

    这对我有帮助:

    ).data().autocomplete._renderItem = function (ul, item) {

    【讨论】:

      猜你喜欢
      • 2012-08-29
      • 2021-08-13
      • 2016-09-10
      • 1970-01-01
      • 2020-10-05
      • 2017-06-22
      • 2018-10-12
      • 2014-08-14
      • 2014-06-21
      相关资源
      最近更新 更多