javascript - 如何防止select in tooltipdialog的select option操作触发onmouseleave事件

标签 javascript dojo mouseevent mouseleave

ToolTipDialog 中使用 dijit/form/Select。为对话框设置 mouselaveevent。但是当我尝试选择一个选项时会触发该事件。

fiddle 链接:select changes will trigger tooltipdialog onmouseleave

<script>
    require([
        "dojo/parser",
        "dijit/registry",
         "dijit/TooltipDialog",
        "dijit/form/Select",
        "dijit/popup",
        "dojo/on",
        "dojo/dom",
         "dojo/domReady!"
    ], function(parser,registry,TooltipDialog,Select, popup, on, dom){
        parser.parse();

        var selHucode="";

        var myTooltipDialog = new TooltipDialog({
            id: 'myTooltipDialog',
            style:'height:180px',
            style: "width: 300px;",
            content:  '<div id="tpDialog" class="pDlg"></div><div id="btnGroup" class="left"><label for="name">selectP:</label> <input data-dojo-type="dijit/form/RadioButton">' +
        '<br><label for="hobby"> 1111:</label> <input data-dojo-type="dijit/form/RadioButton"></div>'
        +'<div id="selectMenu" class="right"> <select name="select1" id="sel"   data-dojo-type="dijit/form/Select"> <option value="TN">Tennessee</option>'+
        '<option value="VA" selected="selected">Virginia</option></select></div>' ,
            onMouseLeave: function(e){

                 popup.close(myTooltipDialog);
            },
        onOpen:function(e){

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

           sHu.on("focus",function(e){
               console.log(e);
           })
            selHucode=sHu.value;
   //      console.log(sHu.value);
        }
        });



        on(dom.byId("ttt"),"mouseover" , function(e){

            popup.open({
                popup: myTooltipDialog,
                orient: ["above-centered","above","below"],
                around:dom.byId('ttt')

            });

        });


    });
</script>

<span id="ttt"  >  tttt</span>

最佳答案

很简单: 在您的 TooltipDialog onMouseLeave 事件中使用 registry getEnclosingWidget 方法检查鼠标是否悬停在选择上,如果它对应于您的选择名称 ('select1') 然后阻止关闭。

这是您要更改的代码:

onMouseLeave: function(e){
   if(registry.getEnclosingWidget(e.target).name=="select1") return;
   popup.close(myTooltipDialog);
}

如果你想检查,这里有一个 fiddle :Fiddle

关于javascript - 如何防止select in tooltipdialog的select option操作触发onmouseleave事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38431816/

相关文章:

javascript - 如何禁用 swipe.js 轮播

JavaScript 在调试器中工作,但在发布到 IIS 时无法工作

dojo - Google 托管的 dojox.gfx

qt - 如果鼠标在鼠标释放前没有移动,则在 Qt 5 中获取鼠标放置事件

winapi - 使用 PostMessage 模拟鼠标事件而不获得焦点 (WINAPI)

javascript - 如何在用户界面中枚举接收者?

javascript - 具有元素结构概述的预加载器屏幕

dojo 构建系统无法识别 es6 语法

dojo - 如何以编程方式制作 Dojo dijit 表单

javascript - 如何让 Javascript 程序模拟鼠标点击?