9

我正在尝试使用以下代码将注意力集中在输入元素上:

<input onblur="this.focus()" />

但这似乎不起作用。

4

1 回答 1

16

如果我们只是.focus()在事件上调用right blur,它会恢复焦点,但实际上不会有文本光标。为了处理这个问题,我们必须让元素失去焦点,然后在几毫秒内返回它。我们可以setTimeout()为此使用。

$('#inp').on('blur',function () { 
    var blurEl = $(this); 
    setTimeout(function() {
        blurEl.focus()
    }, 10);
});

这是工作示例。小心 - 输入后不能离开文本字段 =)

编辑我使用了 jQuery,但没有它也可以轻松完成。
EDIT2这是纯 JS 版本的小提琴

<input type="text" id="elemID" />

<script type="text/javascript">
    document.getElementById('elemID').onblur = function (event) { 
        var blurEl = this; 
        setTimeout(function() {
            blurEl.focus()
        }, 10);
    };
</script>
于 2013-03-27T22:23:58.550 回答