2013-08-22 2 views
0

다음은 테스트 파일에 있습니다. 내가 뭘 노력 필터링에서 선택 값을 작성하는 것입니다. 처음에는 제대로 작동하지만 다음 번에는 필터링이 수행되지 않습니다 (드롭 다운에서 값을 사용할 수 없음). filterselect를 처음 변경하면 onchange가 성공적으로 호출됩니다.FilteringSelect가 다시 작동하지 않습니다.

문제를 찾으려면 도와주세요. 나는 도장을 처음 사용합니다. - DOJO 버전 DOJO 1.8

<script> 
    require([ 
     "dojo/store/Memory", "dijit/form/FilteringSelect", "dojo/domReady!" 
    ], function(Memory, FilteringSelect){ 
     var stateStore = new Memory({ 
      data: [ 
       {name:"Alabama", id:"AL"}, 
       {name:"Alaska", id:"AK"}, 
       {name:"American Samoa", id:"AS"}, 
       {name:"Arizona", id:"AZ"}, 
       {name:"Arkansas", id:"AR"}, 
       {name:"Armed Forces Europe", id:"AE"}, 
       {name:"Armed Forces Pacific", id:"AP"}, 
       {name:"Armed Forces the Americas", id:"AA"}, 
       {name:"California", id:"CA"}, 
       {name:"Colorado", id:"CO"}, 
       {name:"Connecticut", id:"CT"}, 
       {name:"Delaware", id:"DE"} 
      ] 
     }); 

     var filteringSelect = new FilteringSelect({ 
      id: "stateSelect", 
      name: "state", 
      placeHolder: "Select a State", 
      store: stateStore, 
      searchAttr: "name", 
      onChange: function(value) { 
       var text1 = document.getElementById("divid").innerHTML 
       document.getElementById("divid").innerHTML = text1 + dijit.byId('stateSelect').attr('displayedValue') + ';'; 
      } 
     }, "stateSelect"); 
    }); 
</script> 

<div id="divid"> 
    Select a State : <input id="stateSelect"> 
</div> 

답변

1

귀하의 오류는 당신이 당신의 로그 출력을하는 방식 때문입니다 :

var text1 = document.getElementById("divid").innerHTML; 
document.getElementById("divid").innerHTML = text1 + [...] 

'divId는이'divid.innerHTML 다시 설정하면 FilteringSelect의는 Dijit 마크 업을 포함하는 기존의 DOM을 덮어 쓰기 때문에 기존의 FilteringSelect dijit 인스턴스를 엉망으로 만든다. 일반적으로 dijit 인스턴스의 DOM을 수정해서는 안됩니다.

<div id="divid"> 
Select a State : <input id="stateSelect"> 
<span id="buffer"></span> 
</div> 

과의 onChange가된다 : 그냥 값을 기록하는 마크 업에 빈 범위 요소를 추가

onChange: function(value){ 
var text1 = document.getElementById("buffer").innerHTML; 
document.getElementById("buffer").innerHTML = text1 + [...] 
} 
관련 문제