我正在使用jquery自动完成功能,并且我已经设置了这些变量
$("#some_id").autocomplete("search.php?in=somewhere", {
width: 270,
selectFirst: false
});
$('#some_id').setOptions({max: 5});
正如你所看到它返回5个列表项(结果),我想添加第六个列表项,其中应该显示一些文本以及除了这5个以外存在多少个结果。
我该怎么做?
答案 0 :(得分:3)
可能需要围绕此功能进行编辑。
function fillList() {
list.empty();
var max = limitNumberOfItems(data.length);
for (var i=0; i < max; i++) {
if (!data[i])
continue;
var formatted = options.formatItem(data[i].data, i+1, max, data[i].value, term);
if ( formatted === false )
continue;
var li = $("<li/>").html( options.highlight(formatted, term) ).addClass(i%2 == 0 ? "ac_even" : "ac_odd").appendTo(list)[0];
$.data(li, "ac_data", data[i]);
}
// INSERT YOUR ADDITIONAL ENTRY HERE...
listItems = list.find("li");
if ( options.selectFirst ) {
listItems.slice(0, 1).addClass(CLASSES.ACTIVE);
active = 0;
}
// apply bgiframe if available
if ( $.fn.bgiframe )
list.bgiframe();
}
答案 1 :(得分:3)
非常感谢! 这就是我做的事情
function fillList() {
list.empty();
var max = limitNumberOfItems(data.length);
for (var i=0; i < max; i++) {
if (!data[i])
continue;
var formatted = options.formatItem(data[i].data, i+1, max, data[i].value, term);
if ( formatted === false )
continue;
var li = $("<li/>").html( options.highlight(formatted, term) ).addClass(i%2 == 0 ? "ac_even" : "ac_odd").appendTo(list)[0];
$.data(li, "ac_data", data[i]);
}
listItems = list.find("li");
//////////////////////////// TOM //////////////////////////////////////////////////////////////////////////////////
if( data.length > 5 ){
if( (data.length-5) == 1 ){
listItems[4].innerHTML +='<div style="position:absolute; top:127px; left:0px; width:260px;text-align:right;" >'+(data.length-5)+' item isn\'t shown</div>';
}
else{
listItems[4].innerHTML +='<div style="position:absolute; top:127px; left:0px; width:260px;text-align:right;" >'+(data.length-5)+' items aren\'t shown</div>';
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if ( options.selectFirst ) {
listItems.slice(0, 1).addClass(CLASSES.ACTIVE);
active = 0;
}
// apply bgiframe if available
if ( $.fn.bgiframe )
list.bgiframe();
}
答案 2 :(得分:3)
这是我做的,我的后端有一个json用于这个例子(可能,对于默认html的情况,它可以稍微调整一下:),但整个想法应该是相同的
$('#search').autocomplete({
source: function(request, response) {
var requestUrl = 'search.php';
requestUrl += '?term=' + $('#search').val();
$.getJSON(requestUrl, request, function(data){
// I know here - what kind of array of json objects I'll get as
// a result, with <li> elements it should be even easier (I guess)
// AND: this will add item, if there are more than 5 elms in the list,
// but you should get the idea
if (5 < data.length) {
data.push({
id: -1,
value: '',
label: 'Put your own question...'
});
}
response(data);
});
}
});