2016-07-27 1 views
1

なぜ選択変更イベントの実行時間は、ボタンのクリック数とともに増加します。ToolTipDialog実行時間で "select"の "change"イベントの発行

HTML:

<button id="btn">click me</button> 

JS

require(["dojo/_base/declare", "dojo/dom", "dojo/on", "dojo/_base/lang", "dijit/registry", "dijit/TooltipDialog", "dijit/popup","dijit/form/Select", "dojo/_base/array", "dojo/domReady!"], 
    function(declare, dom, on, lang, registry, TooltipDialog, popup,Select, Array) { 
    var InfoWindow= declare(// 类名省略 
    TooltipDialog, 
    { 
     constructor: function (parameters) { 
     console.log("hello"); 

     }, 

     test:function(){ 
     var tNode=dom.byId("btn"); 
     var myTooltipDialog = new TooltipDialog({ 
      id: 'myTooltipDialog', 
      style: "width: 300px;", 
      content: '<div id="tpDialog006" class="pDlg"></div><div id="selectMenu" class="right"><select name="select1" id="sel006" data-dojo-type="dijit/form/Select"> <option value="037" selected="selected">1</option><option class="left" value="005" >2</option><option class="left" value="007" >3</option><option value="006">4</option></select></div>', 
      onMouseLeave: function(e){ 
      if(registry.getEnclosingWidget(e.target).name=="select1") 
       return; 
      popup.close(myTooltipDialog); 
      }, 
      onOpen:lang.hitch(this, function(e) { 

      }) 
     }); 

     var sHu = registry.byId("sel006"); 
     sHu.on("change", function (e) { 
      alert("value is" +sHu.value); 
     }); 

     on(tNode,"click",function(){ 
      popup.open({ 
      popup: myTooltipDialog, 
      around: dom.byId('btn') 
      }); 
     }) 
     this.m1="t1"; 

     } 

    } 
); 

    var infoWindow = new InfoWindow({ 
    }); 
    infoWindow.test(); 


}); 

コードがリンクである:code link

がtooltipdialogショーのためのいくつかの問題がある可能性がありますが、それはしません再現する問題に影響を与えます。

答えて

0

ので、これはクリックが再現されていることを普通である:あなたがそうPopupを開いている]をクリックし、ツールチップのopen機能がされているすべてのボタンで

on(tNode,"click",function(){ 
    popup.open({ 
     popup: myTooltipDialog, 
     around: dom.byId('btn') 
    }); 
}) 

:ボタンのクリック(上記)で

onOpenイベントが発生しました)、これは変更イベントがsel006select入力に再度追加されたことを意味します。

var myTooltipDialog = new TooltipDialog({ 
        id: 'myTooltipDialog', 
        style: "width: 300px;", 
        content: '<div id="tpDialog006" class="pDlg"></div><div id="selectMenu" class="right"><select name="select1" id="sel006" data-dojo-type="dijit/form/Select"> <option value="037" selected="selected">1</option><option class="left" value="005" >2</option><option class="left" value="007" >3</option><option value="006">4</option></select></div>', 
    onMouseLeave: function(e){ 
     if(registry.getEnclosingWidget(e.target).name=="select1") 
     return; 
     popup.close(myTooltipDialog); 
    }, 
    onOpen:lang.hitch(this, function(e) { 
     // remove event from here     
    }) 
}); 

var sHu = registry.byId("sel006"); 

sHu.on("change", function (e) { 
    alert("value is" +sHu.value); 
}); 

フィドル例ベロー:

は、私があなたに提案することはツールチップ内onOpenイベントを選択変更イベントを割り当て、ちょうど

だからコードがなったツールチップの初期化後にそれを宣言することではありません:!Fiddle

+0

はあなたの助け@bRIMOsボルいただきありがとうございます。できます。 –

+0

あなたは大歓迎です@BaohuaChu :) –