2011-12-23 3 views
1

FilteringSelect가 양식에 있는데 새로운 옵션을 사전 순으로 삽입하려면 옵션을 가져오고 싶습니다.FilteringSelect 옵션을 얻고 Dojo를 사용하여 새 옵션을 추가하는 방법

<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> 

그리고 수와 각 옵션을 였는지를 할 수있는 자바 스크립트 코드는 다음과 같습니다 :

FilteringSelect 요소입니다

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

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

목표는 다음 노드를 삽입하는 것입니다

두 개의 기존 값 사이에 value 속성이 아닌 비교 값으로 레이블을 사용합니다.

아이디어가 있으십니까? 사전에 고마워하고 미안 해요 내 영어!

답변

5

상점을 사용하여 목록을 백업하면 쉽게 할 수 있습니다. dojo 1.6>을 사용한다고 가정합니다.

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

는 기존를 제거하려면 다음과 같이 나는이 문제를 해결

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

좋습니다. 사용자에게 일부 데이터를 요청한 후 저장소에 항목을 삽입하면 FilteringSelect가 즉시 업데이트됩니까? – franipfp

+0

예. 나는 이것을 게시하기 전에 테스트했다. – Philippe

+0

고마워요! 그것은 완벽하게 작동합니다. 나는 더 어려운 것을하려고 노력하고 있었고 대답은 멋지고 간단합니다. – franipfp

-1

:

<input id="inv_ext"> 

-In 자바 스크립트 : 당신의 HTML -In

예를 들면 다음과 같습니다 요소는 다음과 같습니다.

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]); 
} 
+0

이것은 Dojo에서 수행해야하는 방법이 아닙니다. – GuyT

관련 문제