【问题标题】:Jquery autocomplete resulting in '_renderItem' of undefined errorJquery 自动完成导致未定义错误的“_renderItem”
【发布时间】:2019-09-03 13:49:58
【问题描述】:

我有一个自动完成功能,它正在调用一项服务来根据自动完成功能的参数过滤列表。进入页面后,我收到错误“无法设置未定义的属性“_renderItem””。我看到这在其他地方使用没有问题。不确定出了什么问题。

尝试在没有任何实际进展的情况下进行重构。

    $(this).autocomplete({
        source: function (request, response) {
            app.ajax({
                values: {
                    searchDesc: request.term,
                    codeSet: filter.codeSet
                },
                url: 'Services/Workflow.svc/GetLOCsWCodeSetList',
                indicatorId: c.SILENTAJAXINDICATOR
            }).done(function (data, status, jqXhr) {
                var tablesData = [];
                tablesData = $.map(data.d, function (item) {
                    return { label: item.Description, value: item.Description, Key: item.ID, ProcedureCode: item.ProcedureCode };
                });
                response(tablesData);
            });
        },
        minLength: 3,
        change: changeEvent,
        select: selectEvent
    }).autocomplete('instance')._renderItem = function (ul, item) {
        let _aitem = item.label;
        if (_aitem.indexOf('refine entry') > -1) {
            _aitem = '<div class="ac-moreres"><b>' + _aitem + "</b></div>";
        } else {
            _aitem = '<div class="ui-menu-item-wrapper">' + _aitem + '</div>';
        }
        return $("<li>")
            .data("item.autocomplete", item)
            .append(_aitem)
            .appendTo(ul);
    };
};

自动完成功能在初始页面加载后工作,但在没有任何数据的情况下刷新页面时,我再次收到原始错误。

如何防止出现“未定义”错误?

【问题讨论】:

    标签: jquery autocomplete rendering


    【解决方案1】:

    我能够自行修复错误。

    $.fn.locwithProcCodeLookup = function (filter, selectEvent, changeEvent) {
        $(this).autocomplete({
            source: function (request, response) {
                app.ajax({
                    values: {
                        searchDesc: request.term,
                        codeSet: filter.codeSet
                    },
                    url: 'Services/Workflow.svc/GetLOCsWCodeSetList',
                    indicatorId: c.SILENTAJAXINDICATOR
                }).done(function (data, status, jqXhr) {
                    var tablesData = [];
                    tablesData = $.map(data.d, function (item) {
                        return { label: item.Description, value: item.Description, Key: item.ID, ProcedureCode: item.ProcedureCode };
                    });
                    response(tablesData);
                });
            },
            minLength: 3,
            change: changeEvent,
            select: selectEvent,
            _create: function () {
                this._super();
                this.widget().menu("option", "items", "> :not(.ui-widget-header)");
            },
            _renderMenu: function (ul, items) {
                var self = this,
                    thead;
                if (this.options.showHeader) {
                    table = $('<div class="ui-widget-header" style="width:100%"></div>');
                    $.each(this.options.columns, function (index, item) {
                        var _style = item.style ? item.style : '';
                        table.append('<span style="padding:0 4px;float:left;width:' + item.width + ';' + _style + '">' + item.name + '</span>');
                    });
                    table.append('<div style="clear: both;"></div>');
                    ul.append(table);
                }
                $.each(items, function (index, item) {
                    self._renderItem(ul, item);
                });
                $(ul).find("li:odd").addClass("odd");
                $(ul).addClass('ulmca');
            },
            _renderItem: function (ul, item) {
                let _aitem = item.label;
                if (_aitem.indexOf('refine entry') > -1) {
                    _aitem = '<div class="ac-moreres"><b>' + _aitem + "</b></div>";
                } else {
                    _aitem = '<div class="ui-menu-item-wrapper">' + _aitem + '</div>';
                }
                return $("<li>")
                    .data("item.autocomplete", item)
                    .append(_aitem)
                    .appendTo(ul);
            }
        });
    };
    

    【讨论】:

      猜你喜欢
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      • 2017-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多