jquery bootstrap-multiselect,使用非连续单词进行搜索

时间:2016-05-27 02:31:53

标签: jquery bootstrap-multiselect

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

例如,在下文中,他们希望通过使用“one two”搜索显示所有具有“one”和“two”的选项

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

结果应显示1)和2)

2 个答案:

答案 0 :(得分:1)

建议使用;之类的特殊字符 在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;
    }
}

我分叉https://github.com/catzaizai/bootstrap-multiselect

答案 1 :(得分:1)

bootstrap-multiselect已经有onFiltering功能,您在bootstrap-multiselect Github存储库中引用此line源代码。

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

但是还没有发布,所以我尝试复制并粘贴我的小提琴并使用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