簡體   English   中英

如何獲取FilteringSelect選項並添加一個帶有dojo的新選項

[英]How to get FilteringSelect options and add a new one with 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>

獲取和處理每個選項的Javascript代碼是:

dojo.query(".opt_inv_ext").forEach(function(opt, i, nodelist){
    ...
}

目標是插入以下節點:

<option class="opt_inv_ext" value="3">Bbbbb, Bbb</option>

在兩個現有的之間使用標簽作為比較值而不是值屬性。

任何想法? 在此先感謝,對不起我的英語!

如果您使用商店支持列表,則很容易做到。 我假設你使用dojo 1.6>。 這是一個例子:

- 在你的HTML中:

<input id="inv_ext">

- 在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' });
});

我解決了這個問題如下:

dijit.byId("select_id").store.root.add(dojo.create("option",{ value: "some", innerHTML: "label of option"}));

要刪除現有元素,請執行以下操作:

var size = dijit.byId("select_id").store.root.removeChild.length;    
for(var i=size; i>=0; i--){
    dijit.byId("select_id").store.root.removeChild(dijit.byId("select_id").store.root.children[size-1]);
}

暫無
暫無

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

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