如何使用这些“高级要求”在JavaScript中伪造“选项卡输入”?

时间:2019-12-16 16:06:39

标签: javascript

我试图用纯JavaScript使HTML文本区域的行为就像是Notepad ++文档一样。 (没有jQuery!)

我目前使用了Stack Exchange代码段,但是它有很多缺陷。我需要它:

  1. 单击TAB时在当前位置创建一个选项卡(而不是将焦点切换到新的表单元素)。这是当前解决方案正确的一件事。
  2. 如果我在添加标签后按Ctrl + Z,则需要将其撤消。当前的解决方案不会为浏览器中的撤消功能触发“更改事件”以注册并记住它。
  3. 如果我选择多行并单击TAB,则需要“全部选中”。当前解决方案会添加一个空格并删除所有选择的内容。
  4. 如果我选择一个或多个行并同时单击TAB和Shift,则需要“取消标记”该行到左侧一步。不用说,当前的解决方案无法做到这一点。

这是当前代码:

var textareas = document.getElementsByClassName('fake-text-editor');
var count = textareas.length;

for (var i = 0; i < count; i++)
{
    textareas[i].onkeydown = function(e)
    {
        if (e.keyCode == 9 || e.which == 9)
        {
            e.preventDefault();
            var s = this.selectionStart;
            this.value = this.value.substring(0, this.selectionStart) + "\t" + this.value.substring(this.selectionEnd);
            this.selectionEnd = s + 1;
        }
    }
}

我不知道从哪里开始实现上述要求。

在我看来,可能已经有一些项目已经完成了这项工作,以在浏览器中模拟功能强大的Notepad ++文本编辑器。但是,我当然找不到任何这样的项目,而且如果这样做的话,我对开放源代码软件的经验是,几乎不可能找到您感兴趣的实际部分,将其剔除并在您自己的软件中使用。但是,很高兴被证明是错误的。

0 个答案:

没有答案