为了账号安全,请及时绑定邮箱和手机立即绑定

插入游标使用Javascript/jQuery的文本

插入游标使用Javascript/jQuery的文本

拉丁的传说 2019-06-24 16:11:23
插入游标使用Javascript/jQuery的文本我有一个有很多文本框的页面。当有人单击某个链接时,我希望在光标所在的位置插入一两个单词,或者添加到具有焦点的TextBox中。例如,如果光标/焦点放在一个标有“Apple”的文本框上,而他单击了一个链接,上面写着“[电子邮件]”,那么我希望文本框上写着‘Apple bob@example.com’。我该怎么做?这是否可能,因为如果焦点放在收音机/下拉/非TextBox元素上怎么办?最后一个专注于文本框的东西能被记住吗?
查看完整描述

3 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超2个赞

用这个,从这里:

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>


查看完整回答
反对 回复 2019-06-24
  • 3 回答
  • 0 关注
  • 480 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信