在丢失焦点时测试哪个元素具有焦点
Testing which element has focus when one lost it
如果焦点已转移到另一个特定元素(另一个SELECT),我要做的是测试元素(SELECT)何时失去焦点。我想在注意力不集中的时候触发一些东西,而不是在两者中的一个上。
问题是,我在第一个选择中测试它何时失去焦点(使用模糊事件),如果另一个选择有焦点,但DOM尚未更新。
下面是我所做的一个例子:
$select1.on("blur", function() {
if($select2.is(":focus"))
{
// do something
}
else
{
// do something else
}
});
$select1和$select2只是包含该元素的两个变量。我读到JQuery在元素获得焦点时添加了一个标识符":焦点",但按照我的做法,它不起作用。
在所有情况下,它都会变成"做其他事情"。
Matt对事件的顺序是正确的,但你可以更有创造力。
例如,使用setTimeout来延迟模糊检查,这样您就知道您已经启动了焦点。易于理解的
$select1.on("blur", function() {
window.setTimeout(function() {
if($select2.is(":focus"))
{
// do something
}
else
{
// do something else
}
},100);
});
试试那个。
因为blur
事件在新元素的focus
之前明显地被激发,所以唯一能做的就是在一个事件中设置一个变量,并在另一个中检测它。
$select1.on('blur', function (e) {
var $that = $(this);
setTimeout(function () {
if (($that.data('focussed') || 0) > e.timeStamp - 5) {
// Do something
} else {
// Something else
}
}, 1);
});
$select2.on('focus', function (e) {
$select1.data('focussed', e.timeStamp);
});
看到它在这里工作;http://jsfiddle.net/uZAMm/
相关文章:
- 单击时将焦点更改为元素
- 检查元素是如何获得焦点的
- 单击其他元素或鼠标向上时隐藏输入框,但保留一次焦点
- 将焦点移动到页面元素
- 如何使元素在按下按钮时不会失去焦点
- 将焦点设置为输入元素角度 js
- 遍历 DOM 以查找哪个元素具有焦点
- 如何从我的页面中找到焦点元素
- 如果单击焦点元素的子元素,则会在获得焦点的父元素上触发模糊事件
- 在焦点元素上按下转义键时,不会引发关键事件
- 使用javascript获取焦点元素的id
- 如何获得焦点元素(<em>)
- 在有许多iframe的文档中查找焦点元素
- js中的焦点元素
- 浏览器中的多个焦点元素
- mvc客户端验证失败后的焦点元素似乎是任意的
- 仅当焦点元素失去焦点时触发事件
- 使用jQuery获取hasClass()的当前焦点元素
- 正在获取网页中的活动元素或焦点元素Id
- 如何在javascript中获得焦点元素的Id