我想忽略自动完成输入中的所有非字母数字字母。例如,如果用户输入K P COLLECTION
,则可以搜索K. P. COLLECTION
。
代码:
var autocomplete_data = data here...
$( ".autocomplete" ).autocomplete({
source: function(req, response) {
var re = $.ui.autocomplete.escapeRegex(req.term);
var matcher = new RegExp( "^" + re, "i" );
response($.grep(autocomplete_data, function(item){return matcher.test(item.label); }) );
},
focus: function( event, ui ) {
$( ".autocomplete" ).val( ui.item.label );
return false;
},
select: function( event, ui ) {
$( ".autocomplete" ).val( ui.item.label );
return false;
}
}).data( "autocomplete" )._renderItem = function( ul, item ) {
return $( "<li></li>" ).data( "item.autocomplete", item ).append( "<a>" + item.label + "<br><small>" + item.desc + "</small></a>" ).appendTo( ul );
};
答案 0 :(得分:3)
您应该从输入和您匹配的术语中删除非字母数字字符。尝试在源函数中的req.term和item.label值上调用类似的东西:
function stripNonAlphaNumeric(string){
var r = string.toLowerCase();
r = r.replace(new RegExp("[^A-z0-9 ]", 'g'), "");
return r;
}