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

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

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

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

function getCaret(node) {  if (node.selectionStart) {    return node.selectionStart;  } else if (!document.selection) {    return 0;  }  var c = "01",      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; }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5040932.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存