我有一个简单的实时搜索过滤器,运行如下:
jQuery.expr[':'].Contains = function(a,i,m) {
return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0;
};
var $section = $('section');
var $noresults = $('#noresults');
$noresults.hide();
$('#search').bind('keyup focus', function() {
var input = $(this).val();
if(input) {
$section.hide();
var result = $("section:Contains('"+input+"')");
if(result.length) {
$noresults.hide();
result.show();
}
else {
$noresults.show();
}
}
else {
$noresults.hide();
$section.show();
}
});
它工作正常,但我被要求让它接受多个值。使用此当前过滤器,如果我键入“ABC” ,则只会显示包含字符串“ABC”的部分。然而,如果我键入"ABC DEF",即使这两个字符串包含在文档的一个或多个部分中,也不会显示任何内容。
我想要获得的是一个过滤器,当我在输入字段中键入“ABC DEF ”时,它只显示包含字符串“ABC” 和 “DEF”的部分。
我尝试了几个涉及拆分输入的解决方案,并提出了以下版本,但它不起作用。你能帮我让这个过滤器接受多个值吗?
$('#search').bind('keyup focus', function() {
var input = $(this).val();
var arr = input.split(/[ ,]+/);
var len = arr.length;
console.log(arr);
console.log(len);
for(var i=0; i<len; ++i) {
if(input) {
$section.hide();
var result = $("section:Contains('"+arr[i]+"')");
if(result.length) {
$noresults.hide();
result.show();
}
else {
$noresults.show();
}
}
else {
$noresults.hide();
$section.show();
}
}
});
非常感谢你的帮助。