![](/img/trans.png)
[英]Dojo how to catch user's input of Dojo.FilteringSelect for onkeyup event
[英]how can dojo.FilteringSelect be configured to match wildcard values?
下面是一个用用户数据填充的filterSelect的示例。 我的目标是对显示的值执行通配符匹配。 例如,如果用户键入“ son”,则下拉匹配项将为“ homer simpSON”和“ carl calSON”。默认情况下,匹配项将仅在标签的开头。
我尝试更改dijit.byId('userselect')。searchAttr,但将其设置为除字符串以外的任何内容都会导致错误的行为。
<input id="userselect">
<script type="text/javascript">
dojo.require("dijit.form.FilteringSelect");
dojo.require("dojo.data.ItemFileReadStore");
var user_data = {
"itentifier":"user_id",
"label":"label",
"items":[
{"first_name":"Waylon","last_name":"Smithers","label":"Waylon Smithers","user_id":7}
,{"first_name":"Carl","last_name":"Carlson","label":"Carl Carlson","user_id":6}
,{"first_name":"Homer","last_name":"Simpson","label":"Homer Simpson","user_id":4}
,{"first_name":"Lenny","last_name":"Leonard","label":"Lenny Leonard","user_id":5}
,{"first_name":"Montgomery","last_name":"Burns","label":"Montgomery Burns","user_id":8}
]
};
dojo.addOnLoad(function() {
var userStore = new dojo.data.ItemFileReadStore({
//url: "/user/lookup",
data: user_data
});
var filteringSelect = new dijit.form.FilteringSelect({
id: "userselect",
name: "userselect",
store: userStore,
searchAttr: 'label' //["first_name", "last_name", "oasis"]
},
"userselect");
});
</script>
您需要设置queryExpr
并将autoComplete
设置为false
var filteringSelect = new dijit.form.FilteringSelect({
id: "userselect",
name: "userselect",
store: userStore,
searchAttr: 'label',
queryExpr: '*${0}*',
autoComplete: false
},"userselect");
用于queryExpr
Dojo文档:
它根据用户键入的内容指定将什么查询发送到数据存储。 更改此表达式将修改结果是否仅是完全匹配,“以...开头”匹配等。dojo.data查询表达式模式。 $ {0}将代替用户文本。 *用于通配符。
${0}*
表示“开头为”
*${0}*
表示“包含”
${0}
表示“是”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.