我正在处理一个非常讨厌的ajax调用HTMl源,我有使用。我需要获取html响应并将其设置为可以在jQuery自动完成列表中列出。
使用Ajax自动完成功能
$("#From, #To, #FromVacations, #ToVacations").autocomplete({
source: function(request, response) {
$.ajax({
url: '/list.html',
data: {
prefix: request.term,
type: 'F',
ver: '1.0'
},
dataType: 'html',
success: function(data) {
response(data);
}
})
}
});
示例回复
<html>
<head></head>
<body>
<div id="listautocomp" style="background:white">
<ul id="ulSuggest">
<li style="padding:0px;">
<div id="WAS|0|0***<b>WAS</b> - <b>Was</b>hington All Airports, District of Columbia, United States"
onclick="SetLocationStrings(this.id)" onmouseover="SuggestMouseOver(this)"><span class="airporticon"
style="visibility:hidden;;"></span><b>WAS</b>
- <b>Was</b>hington All Airports, District of Columbia, United States
</div>
</li>
<li style="padding:0px;">
<div id="SEA|1|0***SEA - Seattle/Tacoma, <b>Was</b>hington, United States"
onclick="SetLocationStrings(this.id)" onmouseover="SuggestMouseOver(this)"><span class="airporticon"
style="visibility:visible;;"></span>SEA
- Seattle/Tacoma, <b>Was</b>hington, United States
</div>
</li>
<li style="padding:0px;">
<div id="SEA|0|0***SEA - Seattle All Airports, <b>Was</b>hington, United States"
onclick="SetLocationStrings(this.id)" onmouseover="SuggestMouseOver(this)"><span class="airporticon"
style="visibility:hidden;;"></span>SEA
- Seattle All Airports, <b>Was</b>hington, United States
</div>
</li>
<li style="padding:0px;">
<div id="IAD|1|0***IAD - <b>Was</b>hington Dulles, District of Columbia, United States"
onclick="SetLocationStrings(this.id)" onmouseover="SuggestMouseOver(this)"><span class="airporticon"
style="visibility:visible;;"></span>IAD
- <b>Was</b>hington Dulles, District of Columbia, United States
</div>
</li>
<li style="padding:0px;">
<div id="DCA|1|0***DCA - <b>Was</b>hington National, District of Columbia, United States"
onclick="SetLocationStrings(this.id)" onmouseover="SuggestMouseOver(this)"><span class="airporticon"
style="visibility:visible;;"></span>DCA
- <b>Was</b>hington National, District of Columbia, United States
</div>
</li>
<li style="padding:0px;">
<div id="GEG|1|0***GEG - Spokane, <b>Was</b>hington, United States"
onclick="SetLocationStrings(this.id)" onmouseover="SuggestMouseOver(this)"><span class="airporticon"
style="visibility:visible;;"></span>GEG
- Spokane, <b>Was</b>hington, United States
</div>
</li>
<li style="padding:0px;">
<div id="GEG|0|0***GEG - Spokane All Airports, <b>Was</b>hington, United States"
onclick="SetLocationStrings(this.id)" onmouseover="SuggestMouseOver(this)"><span class="airporticon"
style="visibility:hidden;;"></span>GEG
- Spokane All Airports, <b>Was</b>hington, United States
</div>
</li>
<li style="padding:0px;">
<div id="PSC|1|0***PSC - Pasco, <b>Was</b>hington, United States"
onclick="SetLocationStrings(this.id)" onmouseover="SuggestMouseOver(this)"><span class="airporticon"
style="visibility:visible;;"></span>PSC
- Pasco, <b>Was</b>hington, United States
</div>
</li>
<li style="padding:0px;">
<div id="BLI|1|0***BLI - Bellingham, <b>Was</b>hington, United States"
onclick="SetLocationStrings(this.id)" onmouseover="SuggestMouseOver(this)">
<span class="airporticon"
style="visibility:visible;;"></span>BLI
- Bellingham, <b>Was</b>hington, United States
</div>
</li>
<li style="padding:0px;">
<div id="YKM|1|0***YKM - Yakima Air Terminal, <b>Was</b>hington, United States"
onclick="SetLocationStrings(this.id)" onmouseover="SuggestMouseOver(this)"><span class="airporticon"
style="visibility:visible;;"></span>YKM
- Yakima Air Terminal, <b>Was</b>hington, United States
</div>
</li>
<li style="padding:0px;">
<div id="YKM|0|0***YKM - Yakima All Airports, <b>Was</b>hington, United States"
onclick="SetLocationStrings(this.id)" onmouseover="SuggestMouseOver(this)"><span class="airporticon"
style="visibility:hidden;;"></span>YKM
- Yakima All Airports, <b>Was</b>hington, United States
</div>
</li>
<li style="padding:0px;">
<div id="LKE|0|0***LKE - Seattle LKE Union, <b>Was</b>hington, United States"
onclick="SetLocationStrings(this.id)" onmouseover="SuggestMouseOver(this)"><span class="airporticon"
style="visibility:hidden;;"></span>LKE
- Seattle LKE Union, <b>Was</b>hington, United States
</div>
</li>
<li style="padding:0px;">
<div id="EAT|1|0***EAT - Wenatchee, <b>Was</b>hington, United States"
onclick="SetLocationStrings(this.id)" onmouseover="SuggestMouseOver(this)"><span class="airporticon"
style="visibility:visible;;"></span>EAT
- Wenatchee, <b>Was</b>hington, United States
</div>
</li>
<li style="padding:0px;">
<div id="PUW|1|0***PUW - Pullman, <b>Was</b>hington, United States"
onclick="SetLocationStrings(this.id)" onmouseover="SuggestMouseOver(this)"><span class="airporticon"
style="visibility:visible;;"></span>PUW
- Pullman, <b>Was</b>hington, United States
</div>
</li>
<li style="padding:0px;">
<div id="ALW|1|0***ALW - Walla Walla, <b>Was</b>hington, United States"
onclick="SetLocationStrings(this.id)" onmouseover="SuggestMouseOver(this)"><span class="airporticon"
style="visibility:visible;;"></span>ALW
- Walla Walla, <b>Was</b>hington, United States
</div>
</li>
<li style="padding:0px;">
<div id="MWH|1|0***MWH - Moses Lake, <b>Was</b>hington, United States"
onclick="SetLocationStrings(this.id)" onmouseover="SuggestMouseOver(this)"><span class="airporticon"
style="visibility:visible;;"></span>MWH
- Moses Lake, <b>Was</b>hington, United States
</div>
</li>
<li style="padding:0px;">
<div id="MWH|0|0***MWH - Moses Lake All Airports, <b>Was</b>hington, United States"
onclick="SetLocationStrings(this.id)" onmouseover="SuggestMouseOver(this)"><span class="airporticon"
style="visibility:hidden;;"></span>MWH
- Moses Lake All Airports, <b>Was</b>hington, United States
</div>
</li>
<li style="padding:0px;">
<div id="CLM|1|0***CLM - Port Angeles, <b>Was</b>hington, United States"
onclick="SetLocationStrings(this.id)" onmouseover="SuggestMouseOver(this)"><span class="airporticon"
style="visibility:visible;;"></span>CLM
- Port Angeles, <b>Was</b>hington, United States
</div>
</li>
<li style="padding:0px;">
<div id="OLM|1|0***OLM - Olympia, <b>Was</b>hington, United States"
onclick="SetLocationStrings(this.id)" onmouseover="SuggestMouseOver(this)"><span class="airporticon"
style="visibility:visible;;"></span>OLM
- Olympia, <b>Was</b>hington, United States
</div>
</li>
<li style="padding:0px;">
<div id="PAE|1|0***PAE - Everett, <b>Was</b>hington, United States"
onclick="SetLocationStrings(this.id)" onmouseover="SuggestMouseOver(this)"><span class="airporticon"
style="visibility:visible;;"></span>PAE
- Everett, <b>Was</b>hington, United States
</div>
</li>
</ul>
</div>
</body>
</html>
所以问题是:如何在自动完成下拉列表中仅显示'li'? 我还想在下拉列表中保留粗体标记谢谢!
答案 0 :(得分:1)
您可以尝试类似
的内容// ...
success: function(data) {
var tags = [];
$('li div',data).each( function() {
var tag = $(this).html();
tag = $.trim(tag);
tag = tag.replace(/\s{2,}/g, ' ');
tags.push(tag);
});
$('#edit').autocomplete( { source: tags } );
}
// ...
根据this answer,您可以尝试使用这样的构造来支持html标记:
// ...
$('#edit').autocomplete({
source: tags,
select: function(event, ui) {
var text = ui.item.value;
text = text.replace(/<\/?[^>]+>/gi, '');
ui.item.value = text;
}
}).data("ui-autocomplete")._renderItem = function(ul, item) {
return $( "<li>" )
.append( $( "<a>" ).html( item.label ) )
.appendTo( ul );
};
// ...