检查两个元素是否未聚焦
Check that two elements aren't in focus
我必须输入不能共享父元素的元素 #Core 和 #Price。我需要测试它们是否不在焦点上,以及它们何时没有运行函数。
我想我可以做一个检查,以确保当一个模糊时,另一个没有像这样被聚焦:
$('#Core').blur(function() {
if(!$("#Price").is(":focus")) {
getSellingPrice()
}
});$('#Price').blur(function() {
if(!$("#Core").is(":focus")) {
getSellingPrice()
}
});
但是,即使我将焦点放在另一个输入节点上,这似乎也会触发。我的猜测是,当模糊发生时,它会在尚未选择之前检查秒焦点。但我不确定如何更改代码以获得所需的行为,即在触发函数调用之前确保两个元素都不在焦点上。
非常感谢关于我如何完成此操作的任何想法或对当前代码不起作用的原因的见解。
您可以检查活动元素是否既不是
var elems = $('#Core, #Price').blur(function() {
setTimeout(function() {
if ( elems.toArray().indexOf(document.activeElement) === -1 ) {
getSellingPrice();
}
});
});
但是您需要超时以确保设置焦点等。
模糊元素会将焦点传递给正文元素,然后再将其传输到单击的子元素。可怕的可能是一次性计时器,可用于通过检查单击的元素来解耦模糊。由模糊事件触发的概念代码(根据需要转换为您的编码标准、jQuery 和应用程序):
function blurred(el)
{
setTimeout(checkFocus, 4); // ( 4 == Firefox default minimum)
}
function checkFocus()
{ var a = document.getElementById("a");
var b = document.getElementById("b");
var infocus = document.activeElement === a || document.activeElement === b;
if(infocus)
console.log( "One of them is in focus");
else
console.log(" Neither is in focus");
}
.HTML
a: <input id="a" type="text" onblur="blurred(this)"><br>
b: <input id="b" type="text" onblur="blurred(this)">
相关文章:
- javascript数组元素是否知道其封闭数组
- 如何检查元素是否在iframe中
- 检查元素是否将状态从隐藏更改为可见
- 确定元素是否存在
- 消隐数组元素是否生成自己的属性
- 检查一个元素是否有一个类与另一个类总是返回true
- 如何检查日期选择器和时间选择器元素是否使用JQuery/Javascript设置
- 如何查找具有该ID的元素是否存在
- 检查元素是否已单击或hasClass
- 使用webdriver和selenium验证元素是否不存在
- 如何使用jQuery实时检查元素是否为空
- html元素是否具有内置的属性
- 检查元素是否有内容
- 使用 javascript 检查元素是否包含子标记而不是文本
- JavaScript 在 JSON 对象中移动如何判断元素是否存在
- 检查两个或多个 DOM 元素是否重叠
- 谷歌地球插件 — 如何检查带有 ID 的元素是否已经存在
- 检查元素是否悬停在上面
- DOM 元素是否可以具有其值为任意对象(而不是字符串)的属性
- 如何检查DOM元素是否已完全加载