带有子字符串搜索的 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的主要内容,如果未能解决你的问题,请参考以下文章