首页 >web前端 >js教程 >如何使用 JavaScript 在文本区域的光标位置插入文本?

如何使用 JavaScript 在文本区域的光标位置插入文本?

Patricia Arquette
Patricia Arquette原创
2024-11-20 11:32:021009浏览

How to Insert Text at the Cursor Position in a Text Area using JavaScript?

使用 Javascript/jQuery 在光标位置插入文本

在 Web 开发中,在光标所在位置添加文本可以增强用户体验。一种场景包括允许用户在单击链接时无缝地将预定义文本插入到文本框中。

在光标位置插入文本

要在光标位置插入文本,我们可以利用以下 JavaScript 函数:

function insertAtCaret(areaId, text) {
  // Get the textarea element
  var txtarea = document.getElementById(areaId);

  // Check if the element exists
  if (!txtarea) {
    return;
  }

  // Determine the browser type (Internet Explorer or others)
  var br = ((txtarea.selectionStart || txtarea.selectionStart == '0') ?
    "ff" : (document.selection ? "ie" : false));

  // Calculate the cursor position
  var strPos = 0;
  if (br == "ie") {
    txtarea.focus();
    var range = document.selection.createRange();
    range.moveStart('character', -txtarea.value.length);
    strPos = range.text.length;
  } else if (br == "ff") {
    strPos = txtarea.selectionStart;
  }

  // Create a string that consists of the text before, after, and the inserted text
  var front = (txtarea.value).substring(0, strPos);
  var back = (txtarea.value).substring(strPos, txtarea.value.length);
  txtarea.value = front + text + back;

  // Reset the cursor position after inserting the text
  strPos = strPos + text.length;
  if (br == "ie") {
    txtarea.focus();
    var ieRange = document.selection.createRange();
    ieRange.moveStart('character', -txtarea.value.length);
    ieRange.moveStart('character', strPos);
    ieRange.moveEnd('character', 0);
    ieRange.select();
  } else if (br == "ff") {
    txtarea.selectionStart = strPos;
    txtarea.selectionEnd = strPos;
    txtarea.focus();
  }
}

用法示例

以下 HTML 和 JavaScript 代码演示了如何使用 insertAtCaret() 函数:

<textarea>

以上是如何使用 JavaScript 在文本区域的光标位置插入文本?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn