我尝试使用jquery实现自动完成功能。 对于整个单词来说,一切都可以,但是对于sepatare,它是行不通的。 例如,如果我的数据包含: 1)我的蓝色车 2)我最喜欢的车 3)我最喜欢的红色汽车
我需要输入" car"和"红色"只返回最后的数据"我最喜欢的红色汽车" 我使用了term.split('')但是在这种情况下,结果将包含所有三个记录,因为所有记录都包含" car",但是我只需要显示最后一条记录包含所有搜索的术语。 请问你能帮帮我吗? 感谢
我的代码:
var dateintroVar = [
{ labbel: 'my blue car', value: 'my blue car', data: '1'},
{ labbel: 'my favourite car', value: 'my favourite car', data: '2'},
{ labbel: 'my favourite red car', value: 'my favourite red car', data: '3'}
];
$(function() {
$( "#campcompl" ).autocomplete({
minLength: 2,
source: dateintroVar,
focus: function( event, ui ) {
$( "#campcompl" ).val( ui.item.labbel);
$( "#txt1b" ).val( ui.item.data );
return false;
},
select: function( event, ui ) {
$( "#campcompl" ).val( ui.item.labbel);
$( "#txt1b" ).val( ui.item.data );
return false;
}
})
.autocomplete( "instance" )._renderItem = function( ul, item ) {
return $( "<li>" )
.append( "<a>" + item.labbel + "</a>" )
.appendTo( ul );
};
});
在jquery-ui.js中修改:
filter: function(array, term) { var matcher; var keys = term.split(' ');
$.each(keys, function(index, value) {
matcher = new RegExp( $.ui.autocomplete.escapeRegex(value), "i" ); });
return $.grep( array, function(value) {
return matcher.test( value.label || value.value || value );
}); }