如何删除自动完成搜索字段中出现的文本“ undefined”?

时间:2018-08-06 00:49:12

标签: javascript jquery

我有一个自动完成搜索。如果没有与搜索相对应的结果,则会显示消息“无结果。”。

如果用户输入的3个字母与任何结果都不对应,则会显示“无结果”消息。

但是,在“无结果”消息上方显示为“反叛”。您知道如何删除“未定罪”文本吗?

$.widget( "custom.catcomplete", $.ui.autocomplete, {
    _create: function() {
        this._super();
        this.widget().menu( "option", "items", "> :not(.ui-autocomplete-category)" );
    },
    _renderMenu: function( ul, items ) {
        var that = this,

            currentCategory = "";

        $.each( items, function( index, item ) {
            var li;
            if ( item.category != currentCategory ) {
                ul.append( "<li>" + item.category + "</li>" );
                currentCategory = item.category;
            }
            li = that._renderItemData( ul, item );


            if ( item.category ) {
                li.attr( "aria-label", item.category + " : " + item.label );
            }

        });
    }
});

$("#search").catcomplete({
    source: "{{ URL::to('autocomplete-search') }}",
    minLength: 3,
    response: function(event, ui){
        if (!ui.content.length) {
            var noResult = { value:"", label:"No results." };
            ui.content.push(noResult);
        }
    },
    select: function(event, ui) {
        if(ui.item.category=="Conferences"){
            window.location.href = ui.item.url;
        }
        else{
            $.get(ui.item.url, function(result) {
                var newConferences = '';
                var placeholder = "{{route('conferences.show', ['id' => '1', 'slug' => 'demo-slug'])}}";

                $.each(result, function(index, conference) {
                    var url = placeholder.replace(1, conference.id).replace('demo-slug', conference.slug);
                    newConferences += '<div>\n' +
'                        <div class="card box-shaddow">\n' +
'                            <div class="card-body">\n' +
'                                <h5>'+conference.name+'</h5>\n' +
'                            </div>\n' +
'                    </div></div>';
                });
                $('#conferences').html(newConferences);
            }, 'json');
        }
    }
});

1 个答案:

答案 0 :(得分:0)

您可以将条件if ( item.category != currentCategory )替换为条件if ( item.category && item.category != currentCategory )

因此,当商品没有任何类别(这是您的情况:“未定义”)时,它不会在HTML后面添加无用的行。