过滤和搜索文本框使用
问题描述:
这个问题的My Previous Question on Filtering DropdownList过滤和搜索文本框使用
后续我加入了一个额外的功能,并为我想用一个文本框来筛选值。下面是过滤
var filterAndLimitResults = function (cursor) {
if (!cursor) {
return [];
}
var raw = cursor.fetch();
var currentSearchTitle = searchTitle.get();
if(!(!currentSearchTitle || currentSearchTitle == "")) {
filtered = _.filter(filtered, function (item) {
return item.title === currentSearchTitle ;
console.log(item.title === currentSearchTitle);
});
}
var currentLimit =limit.get();
//enforce the limit
if (currentLimit) {
filtered = _.first(filtered, currentLimit);
}
return filtered;
};
的代码,这是keyup
事件我上搜索文本框
"keyup #search-title":function(e,t){
if(e.which === 27){
searchTitle.set("");
}
else {
var text = $(e.target.val);
searchTitle.set(text)
console.log(searchTitle.set(text));
}
}
做有了这个,我能够在console
上的每个按键返回总集合对象,但它不会过滤列表中的值,并且会消耗UI中的所有列表。请帮忙
答
你几乎是对的。你keyUp事件是好的,但你也可以避免使用jQuery这样的:
"keyup .textInput": function(e, t) {
var searchString = e.currentTarget.value;
switch (e.which) {
case 27:
e.currentTarget.value = "";
searchTitle.set("");
break;
default:
searchTitle.set(searchString);
}
}
请注意,我的情况下,使用一个开关你想添加快捷方式针对特定的搜索,像CMD +少校+ C仅搜索对于城市(这可能有点矫枉过正)
关于搜索功能,我假设你想在你的项目的标题中搜索当前的下拉过滤。 然后你需要添加一个额外的步骤来做到这一点。您还需要将其设置在其他过滤器之前。见我下面的例子,你var filtered = [];
后插入:
var filtered = [];
var currentSearchTitle = searchTitle.get();
if(!currentSearchTitle || currentSearchTitle == "") {
filtered = raw;
} else {
currentSearchTitle = currentSearchTitle .replace(".", "\\.");//for regex
var regEx = new RegExp(currentSearchTitle , "i");
filtered = _.filter(raw, function(item) {
return (item && item.title && item.title.match(regEx));
});
}
// your other filtering tasks
return filtered;
此外,花时间去理解代码做什么,你不能只是复制粘贴。
此代码深受meteorkitchen作者,@Perak的工作启发。我改编了它,但我没有按照原样进行测试。
让我们[在聊天中继续讨论](http://chat.stackoverflow.com/rooms/81534/discussion-between-billybobbonnet-and-syed)。 – Billybobbonnet