带有子字符串搜索的 dijit.form.FilteringSelect

Posted

技术标签:

【中文标题】带有子字符串搜索的 dijit.form.FilteringSelect【英文标题】:dijit.form.FilteringSelect with substring search 【发布时间】:2010-01-19 14:45:31 【问题描述】:

dijit.form.FilteringSelect 接近我所需要的。我尝试了很多方法来做我想做的事,但作为一个 dijit 初学者,我什至不知道我是否朝着正确的方向前进。

当我开始输入 FilteringSelect 时,我只会看到以我输入的内容开头的选项。就像对value + "*"的查询一样 我需要的是查看具有我在任何地方键入的内容的任何选项。就像对"*" + value + "*"的查询一样

所以如果有“Apple”、“Banana”和“Orange”,我输入“e”,我应该会看到“Apple”和“Orange”。如果可能,强调搜索字符串:“Apple”、“Orange

我想我需要一些巧妙的数据存储,但无论我走到哪里都像是死路一条。我是否遗漏了什么,或者我应该以完全不同的方式做到这一点?

【问题讨论】:

【参考方案1】:

你想使用queryExpr属性:

var f = new dijit.form.FilteringSelect(
 ...
 queryExpr: "*$0*",
 ...
, node);

注意 $0 前后的 *。

【讨论】:

请注意,如果您将queryExpr 设置为默认值以外的任何值(搜索词的开头),您可能还需要每次设置searchDelay: 1000(1 秒左右)b/c搜索时,它会覆盖用户输入的内容。 替代延迟,您可以将autoComplete设置为false。 bugs.dojotoolkit.org/ticket/13915【参考方案2】:

嘿!您需要将 queryExpr="$0" 添加到过滤选择组件中。

默认情况下,它是 $0* ,这意味着它会搜索以您输入的内容开头的字符串。

作为对其他人的提示,在 JSP 中,我不得不更改查询 expr。到 queryExpr="\$0" .

【讨论】:

文档还建议您应该将 highlightMatch="all" 与此结合使用(但从 dojo1.3 开始,它似乎不太适合我)【参考方案3】:

在我们的项目中,我们通过对dojo.data.util.filter 覆盖patternToRegExp 方法的补丁解决了这个问题。

【讨论】:

【参考方案4】:

经过很多时间的尝试,我可以让它运行,Mada 提示是正确的,但错过了之前和之后的 *。正确的 queryStr(在 JSP 中)是 '*\$0*'

【讨论】:

以上是关于带有子字符串搜索的 dijit.form.FilteringSelect的主要内容,如果未能解决你的问题,请参考以下文章

带有嵌套数组的 NSPredicate

带有全文搜索和项目的 Mongoose 子字段聚合

颤振搜索栏与带有firestore的块

递归搜索根目录和子文件夹中的文件[重复]

编辑带有子实体选择列表框和 HTTPPost 困难的视图

搜索多个字符串,找到时msgbox,如果没有则调用其他sub