jQuery UI Autocomplete忽略非字母数字字母

时间:2011-09-25 21:23:47

标签: jquery jquery-ui jquery-plugins

我想忽略自动完成输入中的所有非字母数字字母。例如,如果用户输入K P COLLECTION,则可以搜索K. P. COLLECTION

这是我在http://jsbin.com/usupem

上的代码

代码:

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 );
};

1 个答案:

答案 0 :(得分:3)

您应该从输入和您匹配的术语中删除非字母数字字符。尝试在源函数中的req.term和item.label值上调用类似的东西:

function stripNonAlphaNumeric(string){
  var r = string.toLowerCase();
  r = r.replace(new RegExp("[^A-z0-9 ]", 'g'), "");
  return r;

}

http://jsbin.com/ufetiq/3