【问题标题】:jquery mobile search filterable listviewjquery 移动搜索可过滤列表视图
【发布时间】:2014-02-26 11:56:31
【问题描述】:

我正在使用 jQuery mobiles listview 向我的用户呈现一个可搜索的列表。假设我有以下三个列表项:

1 这是第一个可搜索的选项。

2 这是第二个可搜索的选项。这不是第一个。

3 此选项是第三个可搜索的选项。

现在,当我输入“the”时,将显示选项一和二。那挺好的。如果我继续并输入“第一个”,将只剩下选项一个。我也需要它来显示选项二,有什么方法可以修改默认搜索以使其按我的意愿工作吗?

简单来说,我希望搜索进行单词匹配,而不是完全匹配。

这是默认搜索的样子:

    customSearch = function(text, searchString) {
        return text.toLowerCase().indexOf(searchString) === -1;
    };

我这里有个 jsfiddle:http://jsfiddle.net/bjornstannek/xLFQ4/

欢迎任何提示!

【问题讨论】:

  • 在你的场景中,如果我输入“first second”,它会给我第一行和第二行正确,然后如果我输入“first third”,它应该给我第一和第三个语句正确吗?
  • 到现在我已经做到了,如果我输入“第一秒”我得到 2 语句,那是你想要的吗?
  • 如果输入了“first third”,它应该不显示,因为没有选项包含“first”和“third”。对于“第一秒”,它应该显示第二,是的,这正是我想要的 :)

标签: listview jquery-mobile


【解决方案1】:

已更新您的代码DEMO

customSearch = function (text, searchString) {
    var arr = searchString.split(" ");
    for (var i = 0; i < arr.length; i++) {
        if ($.trim(arr[i]) != "") {
            if (text.toLowerCase().indexOf($.trim(arr[i])) == -1) {
                return text;

            }
        }
    }
};
$(function () {
  $('#alist').listview('option', 'filterCallback', customSearch);
});

【讨论】:

  • 不,如果我输入“第一个”,它只会识别包含确切短语“第一个”的选项,而我希望它识别包含“第一个”和“第一个”的任何选项"。
  • 已更新我的答案,如果我输入“前三分之一”它不会返回任何值,但如果我输入“第一秒”它会返回第二条语句。如果你还想要什么,请告诉我
  • 非常感谢,这正是我想要的:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-19
  • 2015-07-20
  • 2017-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多