如何将内容插入到输入框光标所在位置

我现在想将表情弹窗中的emoji或颜文字插入到当前光标所在位置该怎么办呢?我们可以使用 JavaScript 操作字符串的方式,将文本插入到指定的光标位置,接下来请看实际操作。

需求如图

image.png

第一步

先给输入框定一个ID

image.png

第二步

获取输入框元素

const textarea = document.getElementById("msg-content"); 

第三步

获取光标起始位置和结束位置

const startPos = textarea.selectionStart;
const endPos = textarea.selectionEnd;

第四步

获取光标前的文本和光标后的文本

  const beforeText = mssageText.value.substring(0, startPos);
  const afterText = mssageText.value.substring(endPos, mssageText.value.length);

最后

插入文本

mssageText.value = beforeText + text + afterText;

完整代码

const receiveMessage = (emoji) => {
  insertAtCursor(emoji.value);
};

const insertAtCursor = (text) => {
  const textarea = document.getElementById("msg-content");
  const startPos = textarea.selectionStart;
  const endPos = textarea.selectionEnd;
  const beforeText = mssageText.value.substring(0, startPos);
  const afterText = mssageText.value.substring(endPos, mssageText.value.length);
  mssageText.value = beforeText + text + afterText;
};

最终效果

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容