1

这是我的示例代码:http: //jsfiddle.net/pT6dB/

我有一点问题。那里有两个示例答案:

“地球有多圆?” 和“纸有多长?”

如果我输入搜索词“round Earth”,我希望它显示“地球有多圆?” 结果,但事实并非如此。

我想我需要更改查询,以便说明哪些问题同时包含“圆形”和“地球”。

这会是一个简单的修改吗?这是来自网站的示例代码,所以不幸的是我不知道从哪里开始。

4

5 回答 5

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();
    }
});
于 2012-07-30T08:25:14.370 回答
0

您需要搜索每个单词,而不是搜索字符串“round Earth”,该字符串在任何项目中都不存在:

    var words = s.split(' ');

    $('#result LI').hide();

    $(words).each(function() {
        $('#result LI:contains(' + this + ')').show();
    });

演示

当然,这里有一些可以想象的复杂情况。我们所做的只是调整脚本以涵盖更具体的场景。但这对于您的目的可能已经足够了。

于 2012-07-30T08:25:04.557 回答
0

我想您是在问“这会是一个简单的修改吗?” 答案是不。:)

您正在尝试在没有数据库的情况下进行全文搜索,而只是 jQuery,让我们不要谈论更复杂的情况,但至少您需要使用 split 将用户输入的单词与空格分开并一一检查。

于 2012-07-30T08:25:15.687 回答
0

您正在寻找的是full-text searchjavascript 并且contains还不够。但是你可以做类似这个问题的公认答案:javascript text search?

于 2012-07-30T08:28:22.440 回答
0

尝试它还检查您是否输入了超过 1 个在句子中不连续的单词。

于 2012-07-30T08:44:41.110 回答