5

以下は、ユーザー データが入力された filteringSelect のサンプルです。私の目標は、表示された値に対してワイルドカード マッチを実行することです。たとえば、ユーザーが「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>
4

2 に答える 2

5

queryExpr設定して設定autoCompleteする必要がありますfalse

var filteringSelect = new dijit.form.FilteringSelect({
  id: "userselect",
  name: "userselect",
  store: userStore,
  searchAttr: 'label',
  queryExpr: '*${0}*',
  autoComplete: false
},"userselect");

の Dojo ドキュメントqueryExpr:

これは、ユーザーが入力した内容に基づいて、データ ストアに送信されるクエリを指定します。この式を変更すると、結果が完全一致のみであるか、「で始まる」一致などであるかが変更されます。 dojo.data クエリ式パターン。${0} はユーザー テキストに置き換えられます。* はワイルドカードに使用されます。

${0}*「で始まる」
*${0}*を意味します 「含む」
${0}を意味します 「である」を意味します

于 2013-05-31T15:54:24.803 に答える
0

queryExprを見てください

于 2010-05-10T18:54:18.843 に答える