`
heikediguo
  • 浏览: 26896 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

IE下javascript获取textarea光标的开始结束位置

 
阅读更多

项目开发中需要计算textarea光标的开始位置与结束位置,以便于在指定位置插入文本。下面这段代码测试通过,能够得到光标的开始位置与结束位置。var er = document.selection.createRange(),start = 0,end = 0;

					if(er.parentElement().id === this.id){
						// create a selection of the whole textarea
						var er1 = document.body.createTextRange();
						er1.moveToElementText(this);
						//两个range,一个是已经选择的text(er),一个是整个textarea(er1)
						//er1.compareEndPoints()比较两个端点,如果er1比er更往左(further to the left),则 //返回小于0的值,则er1往右移一点,直到两个er的start相同。
						// calculate selection start point by moving beginning of er1 to beginning of er
						for (start = 0;er1.compareEndPoints('StartToStart',er) < 0;start++){
							er1.moveStart('character', 1);
						}
						// get number of line breaks from textarea start to selection start and add them to start
						// 计算一下\n
						for (var i = 0; i <= start;i++){
							if (this.value.charAt(i) == '\n'){
								start++;
							}
						}
						// create a selection of the whole textarea
						var er1 = document.body.createTextRange();
						er1.moveToElementText(this);
						// calculate selection end point by moving beginning of er1 to end of er
						for (end = 0;er1.compareEndPoints('StartToEnd',er) < 0;end++){
							er1.moveStart('character',1);
						}
						// get number of line breaks from textarea start to selection end and add them to end
						for (var i = 0;i <= end;i++){
							if (this.value.charAt(i) == '\n'){
								end ++;
							}
						}
					}
 
分享到:
评论

相关推荐

    javascript textarea光标定位方法(兼容IE和FF)

    有一个textArea,就是我们发微薄的那个框,别人的微薄都有一个转发的按钮,当我们点击这个转发按钮的时候,他的微薄就会进入到textArea中,看起来很简单的文本框赋值,其实难点就在于,这时候的光标是定位在最前面的...

    程序天下:JavaScript实例自学手册

    14.13 获取JavaScript函数中的所有参数 14.14 奇偶数的判断 14.15 在JavaScript运行VBScript函数 14.16 购物篮中常用的计算总价效果 14.17 同一用户的来访统计 14.18 十六进制转换为十进制 14.19 将URL转化为16进制 ...

    《程序天下:JavaScript实例自学手册》光盘源码

    14.13 获取JavaScript函数中的所有参数 14.14 奇偶数的判断 14.15 在JavaScript运行VBScript函数 14.16 购物篮中常用的计算总价效果 14.17 同一用户的来访统计 14.18 十六进制转换为十进制 14.19 将URL转化为16进制 ...

    jquery.caret:jQuery插件来操纵输入和textarea元素的插入符位置和选择范围

    获取/设置光标位置和所选范围 在光标位置插入文本 用文字替换所选范围 处理浏览器之间的行尾差异 选择/取消选择任何元素中的所有文本 原料药 脱字号 $.fn.caret() 在单个点上询问并操纵输入字段的光标位置,而无需...

    编辑器 KindEditor 4.0.4

    Bugfix: [WEBKIT] 在图片、视频、flash等前一个光标处右键,在不选中节点的状态下也能弹出修改属性。 Bugfix: [IE] 编辑器无内容,加粗,切换到代码模式,再回到可视化模式,加粗,JS报错。 Bugfix: [IE] 插入&lt...

    xheditor v1.0.0 rc2 build 100401

    修正:IE浏览器下在表格中粘贴会位置错乱问题的修正 修正:IE浏览器下超链接的链接文字,在超链接是“http://”开头的情况下,输入“http://”开头文字无效的修正 修正:UBB模块中style="text-align:*"没转换成...

    55种网页小技巧 ---- 下载无需扣分,具有一定收藏价值

    ENTER键可以让光标移到下一个输入框.html IE地址栏前换成自己的图标 .html TEXTAREA自适应文字行数的多少.html title显示日期.html 不准粘贴.html 不能为空和邮件地址的约束.html 不要滚动条.html 光标是停...

    js使用小技巧

    ENTER键可以让光标移到下一个输入框 (event.keyCode==13)event.keyCode=9"&gt; 文本框的默认值 (this.defaultValue)"&gt; title换行 obj.title = "123&#13sdfs&#32" 获得时间所代表的微秒 var n1 = new Date("2004-...

    ExtAspNet_v2.3.2_dll

    -实际上IE7下所以的回发都慢,原因是客户端的Base64编码速度慢,已经使用encodeURIComponent来代替Base64编码。 -俄语翻译(feedback:vbelyaev)。 +2010-06-30 v2.3.1 -ExtAspNet控件将不在依赖ViewState,...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -修正了弹出菜单的位置在Firefox下不正确的BUG(feedback:eroach)。 -为TriggerBox和TwinTriggerBox增加EnableEdit属性。 -使用Hidden来显示隐藏ExtAspNet控件,而不是使用Visible属性(Visible目前设置为只读属性...

Global site tag (gtag.js) - Google Analytics