2011-01-03 3 views
0

dijit.form에 몇 가지 문제가 있습니다. 항목을 선택하십시오.Dojo js 툴킷 : 동적으로 채워진 선택 문제

페이지에는 두 가지 항목이 있습니다. 하나는 HTML 페이지가로드되는 동안 채워지고 다른 하나는 사용자가 첫 번째 항목에서 선택한 옵션에 따라 채워집니다. 여기

내가 무슨 말을하는지의 예 (지금은 코드가 간단 유지하고있어, 그러나 진짜 버전에서 나는 머리 부분에 필요한 모든 도장 모듈과 라이브러리를 포함 시켰습니다) :

<html> 
     <head> 
       <script type="text/javascript"> 
         function updateB(val){ 

           var menu = dojo.byId("selB"); 

           menu.options.lenght=0; 

           if(val=="aaa") 
             menu.addOption({value: "aa", label: "aa"}); 
           else 
             menu.addOption({value: "bb", label: "bb"}); 
         } 
       </script> 
     </head> 

     <body> 
       <select id="selA" name="selA" dojoType="dijit.form.Select" style="width: 180px;" onchange="updateB(this.get('value'));"></select> 

       <select id="selB" name="selB" dojoType="dijit.form.Select" style="width: 180px; "></select> 

       <script type="text/javascript"> 
         var menu = dojo.byId("selA"); 

         menu.addOption({value: "aaa", label: "aaa"},{value: "bbb", label: "bbb"}); 

       </script> 

     </body> 

</html> 

브라우저에서 페이지를로드 할 때 selA 메뉴에는 aaa 및 bbb 옵션이 있습니다. 그러나 selA에서 aaa 또는 bbb를 선택하면 언제든지 비어 있습니다. 자바 스크립트 오류 콘솔에서 읽을 수 있습니다 : dojo.byId [정의되지 않음] 함수가 아닙니다. 나는이 일을하려고 많은 시간을 보냈지만 (많은 대안을 시도했지만) 행운이 없었다. dojo select를 onload 이벤트에만 채울 수 있습니다. onchange (다른 select와 연관된) 또는 onclick (단추와 연관된)이 아닙니다. 표준 HTML 선택 항목을 사용하면 모든 것이 제대로 작동합니다. 이 문제를 해결하려면 어떻게해야합니까?

감사

다음

답변

0

더 많거나 적은 당신의 내가 변경 한 내용을 예를

<html> 
    <head> 
      <link href="js/dijit/themes/claro/claro.css" rel="stylesheet" type="text/css" /> 
      <script type="text/javascript" src="js/dojo/dojo.js" djConfig="isDebug: true, parseOnLoad: true"></script> 

      <script type="text/javascript"> 
        dojo.require("dijit.form.Select"); 
        function updateB(val){ 
          var menu = dijit.byId("selB"); 
          menu.options.lenght=0; 
          if(val=="aaa") 
            menu.addOption({value: "aa", label: "aa"}); 
          else 
            menu.addOption({value: "bb", label: "bb"}); 
        } 
        dojo.addOnLoad(function() 
        { 
         var menu = dijit.byId("selA"); 
         menu.addOption([{value: "aaa", label: "aaa"},{value: "bbb", label: "bbb"}]); 
        }); 
      </script> 
    </head> 

    <body> 
      <select id="selA" name="selA" dojoType="dijit.form.Select" style="width: 180px;" onchange="updateB(this.get('value'));"></select> 
      <select id="selB" name="selB" dojoType="dijit.form.Select" style="width: 180px; "></select> 
    </body> 

노력하고 있습니다 :

  • 코드를 이동하는 설정 셀라 선택에 dojo.addOnLoad . 이전에 시도했을 때 이 필요했기 때문에 셀 위젯을 얻으려면 완전히 이 아니며 dojo가 위젯을 아직 반환하지 못했기 때문입니다. Dojo는 페이지가 완전히로드 된 후 위젯을 작성합니다. 후에는 addOnLoad 함수라고하는 모든 것을 만듭니다. 따라서 이 함수에 모두 넣어야합니다. 초기화 항목입니다.
  • 선택은 위젯의 종류이므로 dojo.byId 대신 dijit.byId를 사용해야합니다.
+0

감사합니다. –