如何检测文本区域何时失去焦点,并在单击特定元素时保持它不失去焦点?

How can I detect when a text area loses focus and keep it from losing focus when a particular element is clicked?

本文关键字:焦点 失去 单击 元素 检测 何检测 文本 何时 区域      更新时间:2023-09-26

我有一个文本区域#ta,下面有一个列表#ac-list,用于自动补全:

<div id='container'>
    <textarea id="ta" name="god" rows="20"></textarea>
    <ul id='ac-list' style='visibility:hidden'></ul>
</div>

当文本区域失去焦点时,我想隐藏#ac-list。所以我调用jquery的blur在文本区域:

$('#textarea').blur(function () {
    $('#ac-list').css('visibility', 'hidden');
})

这是有效的,但是我想添加约束,当用户单击#ac-list时,文本区域不应该失去焦点。我该怎么做呢?

这是你需要的吗?这只是一个变通办法。在不同的计算机上,文本区域模糊和聚焦到li项所花费的时间是不同的。

HTML:

<div id='container'>
    <textarea id="ta" name="god" rows="20"></textarea>
    <ul id='ac-list'>
        <li>dsfd</li>
    </ul>
</div>
JavaScript:

var textAreaBlur = null;
$('textarea').blur(function () {
    textAreaBlur = new Date();
});
var clickTimes = 0;
$("#ac-list > li").click(
    function() {
        if((new Date() - textAreaBlur) < 200) {
            $("#ta").focus();
            $(this).text("dsfd" + ++clickTimes);
        }
    }
);