Ant*_*Ego 5 javascript dojo javascript-framework
下面是填充了用户数据的filteringSelect的示例.我的目标是在显示的值上执行wilcard匹配.例如,如果用户键入'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>
Run Code Online (Sandbox Code Playgroud)
您需要设置queryExpr并设置autoComplete为false
var filteringSelect = new dijit.form.FilteringSelect({
id: "userselect",
name: "userselect",
store: userStore,
searchAttr: 'label',
queryExpr: '*${0}*',
autoComplete: false
},"userselect");
Run Code Online (Sandbox Code Playgroud)
Dojo文档queryExpr:
这指定了根据用户键入的内容向数据存储发送的查询.更改此表达式将修改结果是否只是完全匹配,"开始于"匹配等dojo.data查询表达式模式.$ {0}将替换用户文本.*用于通配符.
${0}*表示"以...开头"
*${0}*表示"包含"
${0}表示"是"
| 归档时间: |
|
| 查看次数: |
3050 次 |
| 最近记录: |