Dojo dijit.form.FilteringSelect与子字符串搜索

Dojo dijit.form.FilteringSelect与子字符串搜索,dojo,Dojo,dijit.form.FilteringSelect接近我需要的。我已经尝试了很多方法去做我想做的事情,但是作为一个dijit初学者,我永远不知道我是否朝着正确的方向前进 当我开始键入FilteringSelect时,我只看到以我键入的内容开头的选项。就像查询值+“*” 我需要的是看到任何选项,其中包含我在任何地方键入的内容。就像查询“*”+value+“*” 所以如果有“苹果”、“香蕉”和“橙色”,我输入“e”,我应该看到“苹果”和“橙色”。如果可能,请强调搜索字符串:“Apple”,“Ora

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

当我开始键入FilteringSelect时,我只看到以我键入的内容开头的选项。就像查询
值+“*”

我需要的是看到任何选项,其中包含我在任何地方键入的内容。就像查询
“*”+value+“*”

所以如果有“苹果”、“香蕉”和“橙色”,我输入“e”,我应该看到“苹果”和“橙色”。如果可能,请强调搜索字符串:“Apple”,“Orange


我想我需要一些聪明的数据存储,但无论我去哪里都像是死胡同。我是遗漏了什么,还是应该以完全不同的方式来做呢?

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

嘿!您需要将queryExpr=“${0}”添加到filteringselect组件

默认情况下,它是${0}*,这意味着它搜索以键入内容开头的字符串


作为对其他人的提示,在JSP中,我必须更改查询表达式。要查询expr=“\${0}”。

您想使用
queryExpr
属性:

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

请注意${0}之前和之后的*号。

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

文档还建议您结合使用
highlightMatch=“all”
(但从dojo1.3开始,它似乎对我不太合适)注意,如果您将
queryExpr
设置为默认值以外的任何值(搜索术语的开头)您可能还需要设置
searchDelay:1000
(1秒左右)b/c每次搜索时,它都会覆盖用户键入的内容和顶部术语。除此之外,您还可以将
autoComplete
设置为false。