1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > javascript获取textarea中光标的位置 兼容

javascript获取textarea中光标的位置 兼容

时间:2021-12-27 02:24:40

相关推荐

javascript获取textarea中光标的位置 兼容

代码 1varstart=0;

2varend=0;

3functionadd(){

4vartextBox=document.getElementById("ta");

5varpre=textBox.value.substr(0,start);

6varpost=textBox.value.substr(end);

7textBox.value=pre+document.getElementById("inputtext").value+post;

8}

9functionsavePos(textBox){

10//如果是Firefox(1.5)的话,方法很简单

11if(typeof(textBox.selectionStart)=="number"){

12start=textBox.selectionStart;

13end=textBox.selectionEnd;

14}

15//下面是IE(6.0)的方法,麻烦得很,还要计算上'\n'

16elseif(document.selection){

17varrange=document.selection.createRange();

18if(range.parentElement().id==textBox.id){

19//createaselectionofthewholetextarea

20varrange_all=document.body.createTextRange();

21range_all.moveToElementText(textBox);

22//两个range,一个是已经选择的text(range),一个是整个textarea(range_all)

23//pareEndPoints()比较两个端点,如果range_all比range更往左(furthertotheleft),则//返回小于0的值,则range_all往右移一点,直到两个range的start相同。

24//calculateselectionstartpointbymovingbeginningofrange_alltobeginningofrange

25for(start=0;pareEndPoints("StartToStart",range)<0;start++)

26range_all.moveStart('character',1);

27//getnumberoflinebreaksfromtextareastarttoselectionstartandaddthemtostart

28//计算一下\n

29for(vari=0;i<=start;i++){

30if(textBox.value.charAt(i)=='\n')

31start++;

32}

33//createaselectionofthewholetextarea

34varrange_all=document.body.createTextRange();

35range_all.moveToElementText(textBox);

36//calculateselectionendpointbymovingbeginningofrange_alltoendofrange

37for(end=0;pareEndPoints('StartToEnd',range)<0;end++)

38range_all.moveStart('character',1);

39//getnumberoflinebreaksfromtextareastarttoselectionendandaddthemtoend

40for(vari=0;i<=end;i++){

41if(textBox.value.charAt(i)=='\n')

42end++;

43}

44}

45}

46document.getElementById("start").value=start;

47document.getElementById("end").value=end;

48}

49

50 代码 1<formaction="a.cgi">

2<tableborder="1"cellspacing="0"cellpadding="0">

3<tr>

4<td>start:<inputtype="text"id="start"size="3"/></td>

5<td>end:<inputtype="text"id="end"size="3"/></td>

6</tr>

7<tr>

8<tdcolspan="2">

9<textareaid="ta"onKeydown="savePos(this)"

10onKeyup="savePos(this)"

11onmousedown="savePos(this)"

12onmouseup="savePos(this)"

13onfocus="savePos(this)"

14rows="14"cols="50"></textarea>

15</td>

16</tr>

17<tr>

18<td><inputtype="text"id="inputtext"/></td>

19<td><inputtype="button"onClick="add()"value="AddText"/></td>

20</tr>

21</table>

22</form>

23

24

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。