簡體   English   中英

如何將dojo.FilteringSelect配置為匹配通配符值?

[英]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}表示“是”

看看queryExpr

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM