.focus() 在悬停事件中的文本区域不起作用

.focus() not working on textarea in hover event

本文关键字:文本 区域 不起作用 事件 悬停 focus      更新时间:2023-09-26

所以我这里有这段代码。

timeline.afterMilestonePrototypeCreated = function() {
    $(MILESTONE_PROTOTYPE_SELECTOR).hover(function(e){
       $(this).find('textarea').focus();
    });
}

创建后,它应该聚焦文本区域元素。一切正常,我什至在创建和悬停后检查了事件是否被调用。所有其他代码都可以工作,但我无法聚焦该文本区域元素。经过一些谷歌搜索,我试图添加一个 setTimeout,但也没有用。

谢谢!

解决:

文本区域的父元素是一个点,悬停在点上后,它变成一个更大的圆圈,并且比它的内部元素变得可见。问题是,当添加超时时,我设置的持续时间很短,因此使文本区域可见的 css 过渡仍在进行,这就是它没有聚焦的方式。

取而代之的是:

$(this).find('textarea').focus();

试试这个:

$(e.target).find('textarea').focus();

只要$(this).find('textarea')按预期工作,这可能有效:

timeline.afterMilestonePrototypeCreated = function() {
    $(MILESTONE_PROTOTYPE_SELECTOR).hover(function(e){
       e.preventDefault();
       $(this).find('textarea').focus();
    });
}

悬停事件会触发focus事件,因此阻止它将导致手动focus发生。