2016-07-27 27 views
1

Warum wählen Änderung Ereignis Ausführungszeiten werden mit der Anzahl der Schaltfläche klicken.Problem für das "Change" -Ereignis von "Select" in ToolTipDialog Ausführungszeiten

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(); 


}); 

Der Code ist unter dem Link: code link

kann es ein Problem für die tooltipdialog zeigt, aber es wird nicht Auswirkungen auf das Problem, das reproduziert werden soll.

Antwort

0

Dies ist normal, dass der Klick weil wiedergegeben wird:

in die Schaltfläche klicken (oben):

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

In jeder Schaltfläche klicken Sie die Popup öffnen so, die open Funktion Tooltip ist sein ausgeführt (onOpen Ereignis ausgelöst), was bedeutet, dass das Änderungsereignis erneut an Ihren sel006select Eingang angehängt wird.

Was ich Ihnen vorschlagen, ist nicht das Auswahländerungsereignis in den Tooltips onOpen Ereignis zuweisen und erklären es unmittelbar nach dem toolTip Initialisierung

So ist der Code wurde:

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

Bellow pudel Beispiel : Fiddle

+0

Vielen Dank für Ihre Hilfe! @bRIMOs Bor. Es klappt. –

+0

du bist willkommen @BaohuaChu :) –