Javascript 单击指定的div时停止onblur事件

Javascript 单击指定的div时停止onblur事件,javascript,jquery,html,Javascript,Jquery,Html,我有以下设置: 带有onblur事件的输入: <input type="text" onblur="doSomethingCool();" /> 具有onclick事件的1个div: <div id="divOne" onclick="ipiicaei();"></div> 一大堆其他的html 单击divOne元素时,我需要停止doSomethingCool()函数。因此,基本上,当单击指定的页面部分时,停止onblur 注1:eve

我有以下设置:

带有onblur事件的输入:

   <input type="text" onblur="doSomethingCool();" />

具有onclick事件的1个div:

   <div id="divOne" onclick="ipiicaei();"></div>

一大堆其他的html

单击divOne元素时,我需要停止doSomethingCool()函数。因此,基本上,当单击指定的页面部分时,停止onblur

注1:event.stopPropagation似乎不起作用

注2:情况已经简化,诸如“为什么这样做?”、“有什么用?”、“为什么不更改函数以便onclick处理所需内容?”、“为什么不使用其他内容更改onblur事件?”等问题都是无用的


注3:已经有一个或多或少涉及“全局”标志的解决方案。。。但就我个人而言,我觉得它有点蹩脚,我正在寻找一个更好的。

您可以使用以下方法延迟模糊事件:

<input type="text" onblur="setTimeout(doSomethingCool);" />
<div id="divOne" onclick="ipiicaei();" tabindex="-1">test</div>
然后,按如下方式过滤onblur事件:

function doSomethingCool(){
   if(document.activeElement.id === "divOne") return;   
   /* any other relevant stuff here */
}

该标志的问题在于事件是异步触发的(或者至少是(?)-I可能是错误的)。不确定事件是否同步(以任何顺序)会使该标志看起来不可靠。@AlexGill:似乎onblur()是在onclick()之前调用的,因此在onclick()中解除onblur()的绑定是无效的
function doSomethingCool(){
   if(document.activeElement.id === "divOne") return;   
   /* any other relevant stuff here */
}