jquery bootstrap-多选,使用非连续词搜索

jquery bootstrap-multiselect, search using non consecutive words

是否可以修改 https://github.com/davidstutz/bootstrap-multiselect 搜索功能以使用非连续的多个词进行搜索?

例如,在下面的示例中,他们希望通过使用 "one two"

进行搜索来显示具有 "one" 和 "two" 的所有选项

1) 一和二
2) 二加一
3) 蓝色
4) 绿色和蓝色

结果应该显示 1) 和 2)

建议使用;等特殊字符 在 1070 行中:

var queryValues = this.query.split(";");
for(var i = 0;i<queryValues.length;i++){
queryValues[i].trim();
if (this.options.enableFullValueFiltering && this.options.filterBehavior !== 'both') {
        var valueToMatch = filterCandidate.trim().substring(0, queryValues[i].length);
        if (queryValues[i].indexOf(valueToMatch) > -1) {
            showElement = true;
            break;
        }
    }
    else if (filterCandidate.indexOf(queryValues[i]) > -1) {
        showElement = true;
        break;
    }
}

我fork了一个分支https://github.com/catzaizai/bootstrap-multiselect

bootstrap-multiselect 已经有功能 onFiltering,您可以参考 bootstrap-multiselect Github 存储库中的这个 line 源代码。

this.options.onFiltering = $.proxy(this.options.onFiltering, this);

但还没有发布,所以我尝试复制并粘贴到我的 fiddle 中并使用 onFiltering 实现。

onFiltering 中,遵循此代码。

var search_query = $("#example-filterBehavior").next(".btn-group").find('.multiselect-search').val().split(' ');
var search_label = $('#example-filterBehavior').next('.btn-group').find('.multiselect-container > li:not(".multiselect-item.filter")');
search_label.each(function(idx, elem) {
  $(elem).css('display', 'none');
  $(search_query).each(function(q_idx, q_elem) {
    if ($(elem).find('input').val().indexOf(q_elem) > -1) {
      $(elem).css('display', 'list-item');
      $(elem).removeClass('filter-hidden');
    } else {
      $(elem).css('display', 'none');
      return false;
    }
  });
});

这是一个fiddle

尝试输入 one twoBlue Green