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 two
或 Blue Green
。
是否可以修改 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 two
或 Blue Green
。