我有一个自动完成搜索。如果没有与搜索相对应的结果,则会显示消息“无结果。”。
如果用户输入的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');
}
}
});
答案 0 :(得分:0)
您可以将条件if ( item.category != currentCategory )
替换为条件if ( item.category && item.category != currentCategory )
因此,当商品没有任何类别(这是您的情况:“未定义”)时,它不会在HTML后面添加无用的行。