如何获取FilteringSelect选项并添加一个带有dojo的新选项

fra*_*pfp 1 javascript dojo

我在表单中有一个FilteringSelect,我想得到它的选项,以便按字母顺序插入新选项.

FilteringSelect元素是:

<select name="inv_ext" id="inv_ext" data-dojo-type="dijit.form.FilteringSelect">
    <option class="opt_inv_ext" value="1">Aaaaa, Aaa</option>
    <option class="opt_inv_ext" value="2">Ccccc, Ccc</option>
</select>
Run Code Online (Sandbox Code Playgroud)

获取和处理每个选项的Javascript代码是:

dojo.query(".opt_inv_ext").forEach(function(opt, i, nodelist){
    ...
}
Run Code Online (Sandbox Code Playgroud)

目标是插入以下节点:

<option class="opt_inv_ext" value="3">Bbbbb, Bbb</option>
Run Code Online (Sandbox Code Playgroud)

在两个现有的之间使用标签作为比较值而不是值属性.

任何的想法?在此先感谢,对不起我的英语!

Phi*_*ppe 5

如果您使用商店支持列表,则很容易做到.我假设你使用dojo 1.6>.这是一个例子:

- 在你的HTML中:

<input id="inv_ext">
Run Code Online (Sandbox Code Playgroud)

- 在javascript中:

var store = new dojo.store.Memory({
    data : [
        { type : 'options', value : 1, text : 'Aaaaa, Aaa' },
        { type : 'options', value : 2, text : 'Ccccc, Ccc' },
    ]
});

dojo.ready(function(){

        var filteringSelect = new dijit.form.FilteringSelect({
                id: "inv_ext",
                name: "inv_ext",
                store: store,
                searchAttr : 'text',
                query : {
                    type : 'options'
                },
                fetchProperties : {
                    sort : [ { attribute : "text" } ] 
                }
        }, "inv_ext");

        store.put({ type : 'options', value : 3, text : 'Bbbbb, Bbb' });
});
Run Code Online (Sandbox Code Playgroud)