如何检测文本区域何时失去焦点并在单击特定元素时防止其失去焦点?

时间:2011-10-22 22:37:07

标签: javascript jquery html javascript-events

我有一个文本区域#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时文本区域不应该失去焦点。我怎么能这样做呢?

1 个答案:

答案 0 :(得分:0)

这是你需要的吗?这只是一种解决方法。在textarea上模糊和关注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);
        }
    }
);