javascript - 如何将插入符号所在位置的值设置为一个值 [Javascript]

标签 javascript html

我想将插入符号索引处的字符值更改为“[br]”。
我的意思的例子: 假设我们有一个文本框,用户输入一些文本,过了一会儿,他记起自己忘记了开始新行,因此他将插入符移动到他想要新行的位置,然后按 Return\Enter。我想仅使用 javascript 添加字符串“[br]”。这是我现在得到的:

<textarea id="textarea" onkeydown="javascript:DoLine();"></textarea>

这是 DoLine()功能:

    function DoLine() {
    if (event.keyCode == 13) {
      var text = document.getElementById('textarea').value;
      text += "[br]";
      if (text.indexOf("[br]") != text.length) {
        var getTextAfter = text[text.lastIndexOf("[br]")] += "\r";
      }
      document.getElementById('textarea').value = text;
    }
  }

此代码在文本区域的末尾添加“[br]”,而不是插入符号所在的位置。我真的不知道如何获取插入符的索引,所以我只能转换 text var 到字符数组中,然后在插入符号的索引处添加“[br]”。 那么有人知道如何让我的代码按照我想要的方式工作吗?或者知道如何获取插入符位置?
PS:插入符号我的意思是:
enter image description here
谢谢你:)

最佳答案

感谢@Tyr,我找到了答案,这个函数修复了它:

function insertTextAtCursor(el, text) {
var val = el.value, endIndex, range;
if (typeof el.selectionStart != "undefined" && typeof el.selectionEnd != "undefined") {
    endIndex = el.selectionEnd;
    el.value = val.slice(0, el.selectionStart) + text + val.slice(endIndex);
    el.selectionStart = el.selectionEnd = endIndex + text.length;
} else if (typeof document.selection != "undefined" && typeof document.selection.createRange != "undefined") {
    el.focus();
    range = document.selection.createRange();
    range.collapse(false);
    range.text = text;
    range.select();
    }
}

关于javascript - 如何将插入符号所在位置的值设置为一个值 [Javascript],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30038077/

相关文章:

Html/css 导航栏出现在浏览器中的全屏 videojs 上

javascript - JS Fetch 仅接受 OPTIONS 请求并将其打印出来

javascript - 使用 $(document).on ("click",".class",function(){ } 时,如何引用被单击的按钮?

javascript - 触发元素/节点列表的更改太慢

javascript - 具有可变背景宽度的 PIXI tilingSprite

javascript - 根据单击的元素对不同数据使用相同的 jQuery 函数

php - 更新 MySQL 列的按钮不起作用

javascript - 按键时增加数字 (JavaScript)

Javascript正则表达式跨浏览器差异

php - 从 div 到 textarea 的内容