首頁 > web前端 > js教程 > javascript設定文字方塊遊標的方法實例小結

javascript設定文字方塊遊標的方法實例小結

高洛峰
發布: 2016-12-07 15:50:51
原創
1251 人瀏覽過

本文實例總結了javascript設定文字方塊遊標的方法。分享給大家參考,如下:

對於text

1

2

3

4

5

6

7

8

9

//得到光标位置

function getCaret(textbox) {

  var control = document.activeElement;

  textbox.focus();

  var rang = document.selection.createRange();

  rang.setEndPoint("StartToStart",textbox.createTextRange())

  control.focus();

  return rang.text.length;

}

登入後複製

   

對於textarea

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

function getCaret(ZysrID)

{

 var txb = document.getElementById(ZysrID);//根据ID获得对象

 var pos = 0;//设置初始位置

 txb.focus();//输入框获得焦点,这句也不能少,不然后面会出错,血的教训啦.

 var s = txb.scrollTop;//获得滚动条的位置

 var r = document.selection.createRange();//创建文档选择对象

 var t = txb.createTextRange();//创建输入框文本对象

 t.collapse(true);//将光标移到头

 t.select();//显示光标,这个不能少,不然的话,光标没有移到头.当时我不知道,搞了十几分钟

 var j = document.selection.createRange();//为新的光标位置创建文档选择对象

 r.setEndPoint("StartToStart",j);//在以前的文档选择对象和新的对象之间创建对象,妈的,不好解释,我表达能力不算太好.有兴趣自己去看msdn的资料

 var str = r.text;//获得对象的文本

 var re = new RegExp("[//n]","g");//过滤掉换行符,不然你的文字会有问题,会比你的文字实际长度要长一些.搞死我了.我说我得到的数字怎么总比我的实际长度要长.

 str = str.replace(re,"");//过滤

 pos = str.length;//获得长度.也就是光标的位置

 r.collapse(false);

 r.select();//把光标恢复到以前的位置

 txb.scrollTop = s;//把滚动条恢复到以前的位置

}

登入後複製

   

相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
怎麼實作 JavaScript點與圓的位置關係
來自於 1970-01-01 08:00:00
0
0
0
JavaScript鉤子函數是什麼?
來自於 1970-01-01 08:00:00
0
0
0
c++ 呼叫javascript
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板