您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

JavaScript如何从头开始以字符为单位在文本区域中插入符号的列(不是像素)位置?

JavaScript如何从头开始以字符为单位在文本区域中插入符号的列(不是像素)位置?

使用Firefox,Safari(和其他基于Gecko的浏览器),您可以轻松地使用textarea.selectionStart,但对于IE则无法使用,因此您必须执行以下操作:

function getCaret(node) {
  if (node.selectionStart) {
    return node.selectionStart;
  } else if (!document.selection) {
    return 0;
  }

  var c = "\001",
      sel = document.selection.createRange(),
      dul = sel.duplicate(),
      len = 0;

  dul.movetoElementText(node);
  sel.text = c;
  len = dul.text.indexOf(c);
  sel.moveStart('character',-1);
  sel.text = "";
  return len;
}

我还建议您检查jQueryFieldSelection插件,它可以使您做到这一点以及更多…

我实际上重新实现了上面的代码

function getCaret(el) { 
  if (el.selectionStart) { 
    return el.selectionStart; 
  } else if (document.selection) { 
    el.focus();

    var r = document.selection.createRange(); 
    if (r == null) { 
      return 0; 
    }

    var re = el.createTextRange(), 
        rc = re.duplicate(); 
    re.moveToBookmark(r.getBookmark()); 
    rc.setEndPoint('EndToStart', re);

    return rc.text.length; 
  }  
  return 0; 
}
javascript 2022/1/1 18:17:12 有632人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶