这是我的示例代码: http://jsfiddle.net/pT6dB/
我有点问题。那里有两个示例答案:
“地球有多圆?”和“纸是多么矩形?”
如果我输入搜索词“round earth”,我希望它能显示“地球有多圆?”结果却没有。
我想我需要更改查询,以便说明哪些问题同时包含“round”和“Earth”。
这是一个简单的修改吗?这是一个站点的示例代码,所以我不知道从哪里开始不幸。
答案 0 :(得分:3)
$('#search').keyup(function(e) {
var s = $(this).val().trim();
// show all results
$('#result LI').show();
// split the search into words
var keywords = s.split(' ');
// loop over the keywords and if it's not in a LI, hide it
for(var i=0; i<keywords.length; i++) {
$('#result LI:not(:contains('+keywords[i]+'))').hide();
}
});
答案 1 :(得分:0)
您需要搜索每个单词,而不是搜索任何项目中不存在的字符串“round Earth”:
var words = s.split(' ');
$('#result LI').hide();
$(words).each(function() {
$('#result LI:contains(' + this + ')').show();
});
当然,这里有一些可以想象的复杂情况;我们所做的就是调整脚本以涵盖一个更具体的场景。但这可能足以满足您的目的。
答案 2 :(得分:0)
我想你在问“这会是一个简单的修改吗?” 答案是不。 :)
你试图在没有数据库但只是jQuery的情况下进行全文搜索,不要谈论更复杂的情况,但至少你需要使用split来拆分用户输入的空格并逐个检查它们。
答案 3 :(得分:0)
您在javascript中查找的内容为full-text search
,而contains
是不够的。但你可以做一些像这个问题的接受答案:text search in javascript?
答案 4 :(得分:0)
Try that它还会检查你输入的单词是否多于1个单词。