jquery ui仅在标签上自动完成过滤

时间:2017-08-22 08:21:15

标签: javascript jquery jquery-ui

我正在使用jquery v1.10.2,我有以下代码:

(function() {
  var manufacturers=[];
  manufacturers.push({
    label:'Ismail Mayat',
    value:'Ismail Mayat info@test.com'
  });
  $('#list').autocomplete({
        source: manufacturers
      }).data('autocomplete')._renderItem = function( ul, item ) {
      var term = $('#list').val();
      var label = item.label.replace(new RegExp(term, 'i'), '<span class="highlight">$&</span>');

      return $( '<li></li>' )
        .data( 'item.autocomplete', item )
        .append( '<a>' + label + '</a>' )
        .appendTo( ul );
  };

})();

当我搜索ismail或mayat时,我得到了匹配。但是,当我搜索信息时,我没有得到任何结果。如果我将信息部分移动到标签,那么它的工作原理。过滤器正则表达式是否仅使用标签进行搜索?我还尝试通过添加代码来覆盖正则表达式:

$.ui.autocomplete.filter = function (array, term) {
    var matcher = new RegExp('(^| )' + $.ui.autocomplete.escapeRegex(term), 'i');
    return $.grep(array, function (value) {
        return matcher.test(value.label || value.value || value);
    });
};

但我仍然得到同样的东西。我在这里错过了一招吗?

此致

伊斯梅尔

1 个答案:

答案 0 :(得分:0)

好的修好了。所以我需要过滤过滤器:

$.ui.autocomplete.filter = function (array, term) {
    var matcher = new RegExp('(^| )' + $.ui.autocomplete.escapeRegex(term), 'i');
    return $.grep(array, function (value) {
        return matcher.test(value.label) || matcher.test(value.value) || matcher.test(value);
    });
};

有效。