Javascript 单击指定的div时停止onblur事件
我有以下设置: 带有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
<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 */
}