强制一个元素永远不会失去对HTML的关注?

时间:2013-01-29 01:22:12

标签: javascript jquery html html5 textarea

我正在编写一个在线编辑器。为了正确获取字符输入,我在textarea元素上使用jQuery.onKeyPress事件(从正文获取输入不起作用,因为退格等字符激活某些浏览器快捷方式 - 此外,某些字符只能通过这种方式正确提供)。通过将textarea放置在窗口之外来隐藏该textarea(否则将无法工作)。

问题是:

  1. 我正在做什么更好的设计?
  2. 我怎样才能保证这个元素永远不会散焦,除了设置定时器以使其不断聚焦?

2 个答案:

答案 0 :(得分:4)

要确保元素始终处于焦点,请使用:

var $textarea = $('textarea');

$textarea.on('blur', function () {
    setTimeout(function () {
        $textarea.focus();
    }, 0);
});

答案 1 :(得分:0)

上述答案的一个小变体:

<强> HTML:

<input type="text" id="element">

Jquery的

$('#element').on('blur', function () {
    _this = this;
    setTimeout(function () {
        _this.focus();
    }, 0);
});

Vanilla(Plain Js)

var theElement = document.getElementById("element");

theElement.addEventListener("focusout", function(){
    _this = this;
    setTimeout(function () {
        _this.focus();
    }, 0);
});