1

我有重新定义的问题_renderItems。问题是它将 item 设置为 null,换句话说,我收到了一个错误

无法读取 null 的属性“casValue”

代码:

$(function() {
        $('.CasNumber').autocomplete({
            source: function(request, response) {
                $.ajax({
                    url: //url of the page
                    dataType: "json",
                    data: {
                        search_word: request.term,
                    },
                    success: function(data) {
                        response($.map(data.result, function(item) {
                            return {
                                label: item.Cas,
                                value: item.Cas,
                                casLabel: 'Cas No.',
                                casValue: item.Cas,
                                egLabel: 'Eg No.',
                                egValue: item.Eg,
                                REACHLabel: 'REACH No.',
                                REACHValue: item.ReachRegNumber,
                                indexLabel: 'Index-number',
                                indexValue: item.IndexNumber,
                                nameValue: item.Name,
                                data: item
                            }
                        }));
                    }
                });
            },
            minLength: 1,

            focus: function(event, ui) {


                $(".CasNumber").val(ui.item.casValue);
                return false;
            },

            select: function(event, ui) {
                log(ui.item.data, this);
                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>")
            .data("item.ui-autocomplete", item)
            .append("//Format of the drop down list is here")
            .appendTo(ul);
        };
    });

当我使用调试器查看代码时,它会正确获取项目值_renderItem,它会完美地绘制出列表,但是一旦焦点开始(在项目选择之后)ui.item parameter设置为 null。

4

2 回答 2

1

正确的项目渲染:

    _renderItem = function( ul, item ) {
          return $("<li>")
        .attr("data-value", item.value)
        .append("<a></a>")
        .append(item.value)
        .appendTo(ul);
    };

注意标签 <a>

于 2015-09-12T20:31:34.627 回答
0

结构中的第一个元素需要锚定,才能正常工作。

于 2013-03-12T13:09:47.487 回答