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

例如,如果光标/焦点在一个文本框上,上面写着‘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>

Jquery相关问答推荐

如何在不使用点击事件 bootstrap 程序模式的情况下使用弹出窗口 bootstrap 程序显示用户详细信息?

javascript 捕获浏览器快捷方式 (ctrl+t/n/w)

jQuery获取DOM node ?

jQuery 动画滚动

JSON字符串到JS对象

未捕获的类型错误:$.post 不是函数

Codemirror 编辑器在单击之前不会加载内容

使用 jQuery 验证插件自定义日期格式

jQuery DataTables:延迟搜索直到输入 3 个字符或单击按钮

CORS POST 请求可以使用纯 JavaScript,但为什么不使用 jQuery?

测试空 jQuery Select 结果

jQuery: Select 所有具有自定义属性的元素

如何使用 jQuery 或纯 JS 重置所有复选框?

如何使用 jQuery 删除 cookie?

Select jQuery UI 自动完成后清除表单字段

使用 jQuery 获取鼠标单击图像的 X/Y 坐标

如何使用 jQuery Validation Plugin 以编程方式判断表单是否有效

Jquery Select 所有具有 $jquery.data() 的元素

Ajax 处理中的无效 JSON 原语

jquery - 成功时使用ajax结果返回值