Bro*_*bay 19 javascript jquery
我想要做的是弄清楚用户何时使用INPUT或TEXTAREA元素并将变量标志设置为true ...并在用户不再使用它之后立即将该标志设置为false(即,他们'我点击了INPUT/TEXTAREA元素).
我使用jQuery的docuemnt.ready函数将onclick属性添加到我的body元素并将其分配给我的getActive()函数.
getActive()函数的代码如下:
function getActive()
{
activeObj = document.activeElement;
var inFocus = false;
if (activeObj.tagName == "INPUT" || activeObj.tagName == "TEXTAREA")
{
inFocus = true;
}
}
我真的很想通过jQuery框架来保持项目,但似乎无法找到使用JUST jQuery语法完成上述相同逻辑的方法.
Rob*_*Rob 18
您需要焦点和模糊事件处理程序.例如...
var inFocus = false;
$('input, textarea').focus(function() {
inFocus = true;
});
$('input, textarea').blur(function() {
inFocus = false;
});
Run Code Online (Sandbox Code Playgroud)
我很确定一个逗号会让你输入OR textarea,但如果不能解决这个问题,你就会明白
小智 6
function getActive(){
return $(document.activeElement).is('input') || $(document.activeElement).is('textarea');
}
Run Code Online (Sandbox Code Playgroud)
对于有关确定当前关注的元素是否为这些用户输入元素中的任何一个的原始问题,以下方法应适用:
function isInputElementInFocus() {
return $(document.activeElement).is(":input");
}
Run Code Online (Sandbox Code Playgroud)
从概念上讲,我不喜欢这种方法用于一般情况,在这种情况下,您正在监听全局事件(例如按键),并试图确定这些事件应该由全局处理程序处理还是应忽略,因为它是为其他人准备的。我之所以不喜欢它的原因是,它不安全,而且谁知道除了输入元素之外,人还能做什么。
另一个更健壮但棘手的实现想法是测试事件是否针对具有tabIndex> = 0的元素。默认情况下,输入元素的tabIndex === 0设置为使它或多或少类似于上述方法。您可以轻松地进行检查,event.target.tabIndex >= 0而无需依赖document.activeElement。
这里的要点是(如果要通用),还需要确保event.target元素既不在DOM层次结构的另一个分支中,又不在event.currentTarget和event.target之间有其他元素tabIndex >= 0。您有个主意:这可能变得晦涩难懂,但我只是想在其他人需要通用解决方案时记下它。
| 归档时间: |
|
| 查看次数: |
60899 次 |
| 最近记录: |