我正在编写一个在线编辑器。为了正确获取字符输入,我在 textarea 元素上使用 jQuery.onKeyPress 事件(从正文获取输入不起作用,因为退格等字符会激活某些浏览器快捷方式 - 此外,某些字符只能以这种方式正确提供)。该文本区域通过将其放置在窗口外而被隐藏(否则将不起作用)。
问题是:
- 我正在做的事情有更好的设计吗?
- 我如何保证这个元素永远不会散焦,除了设置一个定时器来不断地聚焦它?
我正在编写一个在线编辑器。为了正确获取字符输入,我在 textarea 元素上使用 jQuery.onKeyPress 事件(从正文获取输入不起作用,因为退格等字符会激活某些浏览器快捷方式 - 此外,某些字符只能以这种方式正确提供)。该文本区域通过将其放置在窗口外而被隐藏(否则将不起作用)。
问题是:
要确保元素始终处于焦点位置,请使用以下命令:
var $textarea = $('textarea');
$textarea.on('blur', function () {
setTimeout(function () {
$textarea.focus();
}, 0);
});
上面答案的一个小变体:
html:
<input type="text" id="element">
$('#element').on('blur', function () {
_this = this;
setTimeout(function () {
_this.focus();
}, 0);
});
var theElement = document.getElementById("element");
theElement.addEventListener("focusout", function(){
_this = this;
setTimeout(function () {
_this.focus();
}, 0);
});