当前位置:编程学习 > JAVA >>

用Javascript在编辑框和TextArea的光标处插入文字,支持连续插入

001
<html>
002
 
003
<head>
004
 
005
<title>Test of inserting characters at cursor position</title>
006
 
007
<script type="text/javascript" src="jquery.pack.js"></script>
008
 
009
<script>
010
 
011
function setCaret(textObj){
012
 
013
  if(textObj.createTextRange){  
014
 
015
    textObj.caretPos=document.selection.createRange().duplicate();  
016
 
017
  }
018
 
019
}
020
 
021
function insertAtCaret(textObj,textFeildValue){
022
 
023
  if(document.all&&textObj.createTextRange&&textObj.caretPos){     
024
 
025
      var caretPos=textObj.caretPos;    
026
 
027
      caretPos.text=caretPos.text.charAt(caretPos.text.length-1)==''?textFeildValue+'':textFeildValue;
028
 
029
  }else if(textObj.setSelectionRange){      
030
 
031
      var rangeStart=textObj.selectionStart;
032
 
033
      var rangeEnd=textObj.selectionEnd;   
034
 
035
      var tempStr1=textObj.value.substring(0,rangeStart);    
036
 
037
      var tempStr2=textObj.value.substring(rangeEnd);    
038
 
039
      textObj.value=tempStr1+textFeildValue+tempStr2;
040
 
041
      textObj.focus();
042
 
043
      var len=textFeildValue.length;
044
 
045
      textObj.setSelectionRange(rangeStart+len,rangeStart+len);
046
 
047
      textObj.blur();
048
 
049
  }else {
050
 
051
    textObj.value+=textFeildValue;
052
 
053
  }
054
 
055
}
056
 
057
$(document).ready(function(){
058
 
059
   if($.browser.msie){
060
 
061
     $("#tag")
062
 
063
       .click(function(){
064
 
065
         setCaret($(this).get(0));
066
 
067
       })
068
 
069
       .select(function(){
070
 
071
         setCaret($(this).get(0));
072
 
073
       })
074
 
075
       .keyup(function(){
076
 
077
         setCaret($(this).get(0));
078
 
079
       });
080
 
081
       $("#tagA")
082
 
083
       .click(function(){
084
 
085
         setCaret($(this).get(0));
086
 
087
       })
088
 
089
       .select(function(){
090
 
091
         setCaret($(this).get(0));
092
 
093
       })
094
 
095
       .keyup(function(){
096
 
097
         setCaret($(this).get(0));
098
 
099
       });
100
 
101
   }
102
 
103
   $("a.insertTag")
104
 
105
     .click(function(){
106
 
107
       insertAtCaret($("#tag").get(0),$(this).html());
108
 
109
     });
110
 
111
    $("a.insertTagA")
112
 
113
     .click(function(){
114
 
115
       insertAtCaret($("#tagA").get(0),$(this).html());
116
 
117
     });
118
 
119
 });
120
 
121
</script>
122
 
123
</head>
124
 
125
<body>
126
 
127
References:<br/>
128
 
129
 http://www.dnew.cn/post/287.htm<br/>
 130
 
 131
 http://blog.vishalon.net/Post/57.aspx
 132
 
133
  <div>
134
 
135
    <form>
136
 
137
    <input type="text" id="tag" value="testtesttest" size="50" /><br/>
138
 
139
    <a class="insertTag" href="javascript:void(0)">tag1</a>
140
 
141
    <a class="insertTag" href="javascript:void(0)">tag2</a>
142
 
143
    <br/>
144
 
145
    <textarea id="tagA" style="width:300px;height:120px;" >tttttt tttt</textarea><br/>
146
 
147
    <a class="insertTagA" href="javascript:void(0)">tag3</a>
148
 
149
    <a class="insertTagA" href="javascript:void(0)">tag4</a>
150
 
151
    </form>
152
 
153
    
154
 
155
  </div>
156
 
157
</body>
158
 
159
</html>

摘自 JSON
补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,