从onBlur事件中获取新聚焦的元素(如果有的话)
Get the newly focussed element (if any) from the onBlur event.
在执行onBlur处理程序时,我需要获得新聚焦的元素(如果有的话)。
我该怎么做?
我能想出一些糟糕的解决方案,但没有一个不涉及setTimeout。
引用:
document.activeElement
不幸的是,当模糊事件发生时,新元素没有被聚焦,所以这将报告正文。所以你必须用标志和焦点事件来破解它,或者使用setTimeout。
$("input").blur(function() {
setTimeout(function() {
console.log(document.activeElement);
}, 1);
});
工作良好。
没有setTimeout,你可以使用这个:
http://jsfiddle.net/RKtdm/
(function() {
var blurred = false,
testIs = $([document.body, document, document.documentElement]);
//Don't customize this, especially "focusIN" should NOT be changed to "focus"
$(document).on("focusin", function() {
if (blurred) {
var elem = document.activeElement;
blurred = false;
if (!$(elem).is(testIs)) {
doSomethingWith(elem); //If we reached here, then we have what you need.
}
}
});
//This is customizable to an extent, set your selectors up here and set blurred = true in the function
$("input").blur(function() {
blurred = true;
});
})();
//Your custom handler
function doSomethingWith(elem) {
console.log(elem);
}
为什么不使用focusout事件?https://developer.mozilla.org/en-US/docs/Web/Events/focusout
relatedTarget属性将为您提供接收焦点的元素。
相关文章:
- 如果元素's的ID以数字开头
- 如何检查元素的内容是否为空,如果为空,请在jquery中删除该元素
- 如何知道元素在屏幕上是否可见.如果没有,请滚动页面
- tiltSlider播放/暂停视频元素(如果li有当前类)
- 如果类不是一个选项,如何在使用 jQuery 时控制(避免)嵌套 html 元素的样式
- JQuery 选择子元素(如果不是直接在父元素下,则不确定是否可选)
- 从onBlur事件中获取新聚焦的元素(如果有的话)
- 有角度的ng重复只显示最后一个元素.如果只有一个元素;我什么也不展示
- HTML 转到另一个页面的特定元素(如果该元素尚未显示)
- 一个函数,用于检查鼠标是否仍在每 10 毫秒悬停一个元素(如果是,则运行一个函数)
- JavaScript 2D 数组的独特元素.如果有重复项,如何全部删除
- 动态查找 jQuery 元素(如果存在)
- 角度材质 md 菜单元素如果在具有 z 索引的固定元素上单击外部,则不会关闭
- 检查数组中的元素(如果 jQuery 中的元素为空)
- 滚动到元素(如果它不在视口中)
- 如何选择元素如果我不'我不知道它的身份
- 元素如果在mcustomscrollbar中拖动,则不会向下移动滚动条
- Regex连接元素如果直接相邻
- JQuery根据位置显示元素——如果父元素不在屏幕上,工具提示应该改变位置
- 隐藏元素如果另一个元素包含字母,则显示其他元素