这里和大家分享一下如何用Javascript获取textarea中的光标位置,相信本文介绍一定会让你有所收获的。
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的南昌网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
用Javascript获取textarea中的光标位置
Javascript一向以他的灵活随意而著称,这也使得它的功能可以非常的强大,而由于没有比较好的调试工具,又使得它使用起来困难重重,尤其使对于一些初学者,更是感觉到无从下手。今天探讨的问题是用javascript获取textarea中光标的位置。对于写javascript写网页编辑器的人来说,获取textarea中的光标位置是一个非常重要的问题,而往往很多人在这个地方不知所措,找不到好的办法。昨天我在网上找到了一段javascript代码,本来不想把原版放在这里的,就是因为太精彩了,怕我给改坏了,所以还是原版放在这里吧。
- varstart=0;
- varend=0;
- functionadd(){
- vartextBox=document.getElementById("ta");
- varpre=textBox.value.substr(0,start);
- varpost=textBox.value.substr(end);
- textBox.value=pre+document.
- getElementById("inputtext").value+post;
- }
- functionsavePos(textBox){
- //如果是Firefox(1.5)的话,方法很简单
- if(typeof(textBox.selectionStart)=="number"){
- start=textBox.selectionStart;
- end=textBox.selectionEnd;
- }
- //下面是IE(6.0)的方法,麻烦得很,还要计算上'\n'
- elseif(document.selection){
- varrange=document.selection.createRange();
- if(range.parentElement().id==textBox.id){
- //createaselectionofthewholetextarea
- varrange_all=document.body.createTextRange();
- range_all.moveToElementText(textBox);
- //两个range,一个是已经选择的text(range),
- 一个是整个textarea(range_all)
- //range_all.compareEndPoints()比较两个端点,
- 如果range_all比range更往左(furthertotheleft),
- 则//返回小于0的值,则range_all往右移一点,直到两个range的start相同。
- //calculateselectionstartpointbymoving
- beginningofrange_alltobeginningofrange
- for(start=0;range_all.compareEndPoints
- ("StartToStart",range)<0;start++)range_all.moveStart('character',1);
- //getnumberoflinebreaksfromtextareastarttose
- lectionstartandaddthemtostart
- //计算一下\n
- for(vari=0;i<=start;i++){
- if(textBox.value.charAt(i)=='\n')
- start++;
- }
- //createaselectionofthewholetextarea
- varrange_all=document.body.createTextRange();
- range_all.moveToElementText(textBox);
- //calculateselectionendpointbymovingbeginningofrange_alltoendofrange
- for(end=0;range_all.compareEndPoints('StartToEnd',range)<0;end++)
- range_all.moveStart('character',1);
- //getnumberoflinebreaksfromtextareastarttoselectionendandaddthemtoend
- for(vari=0;i<=end;i++){
- if(textBox.value.charAt(i)=='\n')
- end++;
- }
- }
- }
- document.getElementById("start").value=start;
- document.getElementById("end").value=end;
- }
下面是在页面中调用js代码的方法:
- cellspacing="0"cellpadding="0">
start: - id="start"size="3"/>
end: - id="end"size="3"/>
- onKeyup="savePos(this)"
- onmousedown="savePos(this)"
- onmouseup="savePos(this)"
- onfocus="savePos(this)"
- rows="14"cols="50">
- id="inputtext"/>
- onClick="add()"value="AddText"/>
分享文章:技术分享Javascript如何获取textarea中光标位置
文章分享:http://www.shufengxianlan.com/qtweb/news12/183112.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联