答案 0 :(得分:17)
答案 1 :(得分:6)
function getActive(){
return $(document.activeElement).is('input') || $(document.activeElement).is('textarea');
}
答案 2 :(得分:4)
关于确定当前关注元素是否是这些用户输入元素中的任何一个的原始问题,下面应该有效:
function isInputElementInFocus() {
return $(document.activeElement).is(":input");
}
从概念上讲,我不喜欢这种通用情况的方法,在这种情况下,您正在监听全局事件(如关键字段)并尝试确定这些是否应由全局处理程序处理或被忽略,因为它适用于其他人。我不喜欢它的原因是因为它不是未来的安全,也知道除了输入元素之外还有谁可以。
另一个更强大但难以实现的想法是测试事件是否适用于具有tabIndex> = 0的元素。输入元素默认设置为tabIndex === 0因此它变得或多或少类似于上面的做法。您可以event.target.tabIndex >= 0
轻松查看此内容,而无需依赖document.activeElement
。
这里的问题(如果你想成为通用的)是你还需要确保event.target元素既不在DOM层次结构中的另一个分支中,也不在event.currentTarget和event.target之间有其他人tabIndex >= 0
。你明白了这个想法:这可能会变得模糊不清,但我只是想把它记下来,如果其他人需要通用的解决方案。
答案 3 :(得分:2)
答案 4 :(得分:1)