ie中js获取textarea光标位置

文章标签: javascript
2014-12-10 13:34:32     6 人阅读    

网上一搜一大票,但在使用中发现一些问题,以下所有内容只在ie8中测试过
<textarea id="t2">123</textarea>
方法1:

var srng = document.selection.createRange();
srng.moveStart('character', -t2.value.length);

使用这种方法把srng的其实位置移到t2的开始位置,咋一看这语句有问题,如果光标不在t2的文本的末尾,那不就移动多了嘛,其实是不会的,但是,也会出一些问题,如果光标不是在最后一个或倒数第二个字符的后面处,则srng.text的值为" "加上t2中光标以前的文本,如光标在2和3之间,则得到的srng.text为" 12",前面多了个空格,所以得到的结果也可能有错
方法2:
var rng = t2.createTextRange();
var srng = document.selection.createRange();
srng.setEndPoint("StartToStart", rng);

这个方法好,不会像方法1那样多个空格了,杯具的是,在ie8中setEndPoint会抛出参数无效的异常,如果是input则是可以的,textarea就不行
方法3:
var rng = document.body.createTextRange();
rng.moveToElementText(t2);
var srng = document.selection.createRange();
srng.setEndPoint("StartToStart", rng);

这个方法就可以了,不会抛出异常,也不会多个空格出来
其实这3个方法的思路就是:document.selection.createRange()得到的range的其实位置都在光标处,把这个range的开始位置移动到textarea的文本开始处,则这个range的内容就是光标一起的textarea文本内容了


原文地址:http://www.itmmd.com/201412/293.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

debug assertion failed f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\winocc.cpp错误的解决   上一篇
下一篇  C# 使用WebBrowser嵌入显示Word,Excel,Pdf等

精彩回复
发表评论
姓名:       

《程序员app》专门为程序员量身定做!