我有一个包含很多文本框的页面.当有人点击链接时,我希望在光标所在的位置插入一两个字,或者将其附加到具有焦点的文本框中.
例如,如果光标/焦点在文本框上,说"苹果",并且他点击了一个"[email]"的链接,那么我希望文本框说'apple bob@example.com'.
我怎样才能做到这一点?这是否可能,因为如果重点是收音机/下拉/非文本框元素怎么办?可以记住最后关注文本框的内容吗?
我知道这不应该那么难,但我找不到谷歌的答案.
我想执行一段javascript,它可以清除焦点,无需提前知道焦点所在的元素.它必须适用于Firefox 2以及更现代的浏览器.
有没有办法做到这一点?
可能重复:
如何找出哪个DOM元素具有焦点?
有没有办法在javascript中确定哪个html页面元素有焦点?
假设我有以下div在满足某个条件后获得焦点:
<div id="myID" tabindex="-1" >Some Text</div>
Run Code Online (Sandbox Code Playgroud)
我想创建一个处理程序,检查该div是否具有焦点,当它评估为true/focus在div上时,执行某些操作(在下面的示例中,打印控制台日志):
if (document.getElementById('#myID').hasFocus()) {
$(document).keydown(function(event) {
if (event.which === 40) {
console.log('keydown pressed')
}
});
}
Run Code Online (Sandbox Code Playgroud)
我在控制台中收到一条错误消息:
TypeError:无法读取null的属性'hasFocus'
知道我在这里做错了吗?也许我传递div Id的方式?
如何选择具有当前焦点的元素?
:focusjQuery中没有过滤器,这就是为什么我们可以使用这样的东西:
$('input:focus').someFunction();
Run Code Online (Sandbox Code Playgroud) 我想要做的是弄清楚用户何时使用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语法完成上述相同逻辑的方法.
——不重复!由于其他问题已过时。不与提出的问题重复!!!!
this.elm.nativeElement.ownerDocument.activeElement
Run Code Online (Sandbox Code Playgroud)
还
document.activeElement
Run Code Online (Sandbox Code Playgroud)
奇怪地给了我整个身体。我怎样才能获得当前聚焦的元素?
elm = ElementRef 的类型,它绑定在我组件的构造函数中。
来自这里的另一个问题: this.renderer.invokeElementMethod 也不可调用,因为 Renderer 现在已弃用,而 Renderer2 显然不再具有该方法。
编辑:这个问题部分回答了这个问题:
在离开旧元素和进入新元素之间,活动元素确实是文档/正文本身。
非常类似于如何找出哪个DOM元素具有焦点?除了我没有尝试找到有焦点的领域,我只需要知道一个特定的领域是否已经有焦点.那可能吗?
我们的网站涉及一些生成叠加模态窗口的JavaScript.
但是有一个可访问性问题,一旦模态被触发,focus它仍然在触发元素上而不在模态本身上.
这些模态可以包括各种html元素,标题,段落和表单控件.我想要的是重点开始模态中的第一个元素,所以最有可能是一个h4标签.
我已经探索过使用该focus()函数但是这不适用于许多html元素.
一个想法是a在窗口中添加一个空标签,可以获得焦点,但我不确定这种方法.