javascript - 在光标使用 Javascript/jquery 的位置插入文本

标签 javascript jquery

我有一个包含很多文本框的页面。当有人单击链接时,我希望在光标所在的位置插入一两个词,或附加到具有焦点的文本框。

例如,如果光标/焦点位于显示“apple”的文本框上,并且他单击显示“[email]”的链接,那么我希望文本框显示“apple bob@example.com”。

我该怎么做?这甚至可能吗,因为如果焦点在单选/下拉/非文本框元素上怎么办?可以记住最后一个关注的文本框吗?

最佳答案

使用这个,来自 here :

function insertAtCaret(areaId, text) {
  var txtarea = document.getElementById(areaId);
  if (!txtarea) {
    return;
  }

  var scrollPos = txtarea.scrollTop;
  var strPos = 0;
  var br = ((txtarea.selectionStart || txtarea.selectionStart == '0') ?
    "ff" : (document.selection ? "ie" : false));
  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;
  }

  var front = (txtarea.value).substring(0, strPos);
  var back = (txtarea.value).substring(strPos, txtarea.value.length);
  txtarea.value = front + text + back;
  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();
  }

  txtarea.scrollTop = scrollPos;
}
<textarea id="textareaid"></textarea>
<a href="#" onclick="insertAtCaret('textareaid', 'text to insert');return false;">Click Here to Insert</a>

关于javascript - 在光标使用 Javascript/jquery 的位置插入文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1064089/

相关文章:

Javascript 下拉导航 - 缩小未选择的选项

javascript - 绑定(bind)到 TinyMCE 编辑器的滚动事件

javascript - 使用 CSS 类进行验证时,jQuery 验证器不适用于复选框列表

javascript - 当用户离开 ckeditor 或页面时触发的事件

javascript - 在同一字符串中运行随机字符

javascript - 不完全可见时隐藏 <li> 元素

javascript - 在 jQuery 中将选择器作为函数参数传递

jquery - 计算位置而不考虑包含 block

javascript - 当 <td> 改变大小时,有没有办法注意到?

javascript - IE 6 7 不显示弹出窗口的问题,它在其他 brwsrs 中工作正常