代码 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