文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>ie中js获取textarea光标位置

ie中js获取textarea光标位置

时间:2011-06-17  来源:漫步人生

网上一搜一大票,但在使用中发现一些问题,以下所有内容只在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文本内容了

相关阅读 更多 +
排行榜 更多 +
耶小兔子2

耶小兔子2

休闲益智 下载
nba2k20豪华版

nba2k20豪华版

体育竞技 下载
画线征服火柴人安卓版

画线征服火柴人安卓版

动作格斗 下载