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文本内容了
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28