我正在使用以下代码,它正在工作,获取值等,但< b>和< br>标签显示为文本而不是呈现.我想将item.id和item.label放在不同的行上,如果可能的话,item.id粗体:
$( "#predictSearch" ).autocomplete({ source: function( request,response ) { $.ajax({ url: "index.pl",dataType: "json",data: { term: request.term },success: function( data ) { response( $.map( data.items,function( item ) { return { label: '<B>' + item.id + '</B><br>' + item.label,value: item.id } })); } }); },minLength: 2 });
解决方法
看起来你有一些额外的代码(ajax调用),它可能不需要自动完成.但是,您可以换掉jquery放入的特殊字符来转义自动完成的“打开”事件中的html.
$("#autocomplete_field").autocomplete({ source: "autocomplete.PHP",minLength: 2,open: function(event,ui){ $("ul.ui-autocomplete li a").each(function(){ var htmlString = $(this).html().replace(/</g,'<'); htmlString = htmlString.replace(/>/g,'>'); $(this).html(htmlString); }); } });
完整示例 http://www.jensbits.com/2011/03/03/jquery-autocomplete-with-html-in-dropdown-selection-menu/.
而且,如果您在自动完成中使用perl,http://www.jensbits.com/2011/05/09/jquery-ui-autocomplete-widget-with-perl-and-mysql/就是一个例子.