2011-09-25 84 views
1

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

这是我在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); 
}; 

回答

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