<html> <head> <title>TEST</title> <style> body,td{ font-family: verdana, arial, helvetica, sans-serif; font-size: 12px; } </style> <scripttype="text/javascript"> var start=0; var end=0; functionadd(){ var textBox = document.getElementById("ta"); var pre = textBox.value.substr(0, start); var post = 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){ var range = document.selection.createRange(); if(range.parentElement().id == textBox.id){ // create a selection of the whole textarea var range_all = document.body.createTextRange(); range_all.moveToElementText(textBox); //兩個个range,一個是已經選擇的text(range),一個是整个textarea(range_all) //range_all.compareEndPoints()比较两个端点,如果range_all比range更往左(further to the left),则 //返回小於0的值,則range_all往右移一點,直到兩個range的start相同。 // calculate selection start point by moving beginning of range_all to beginning of range for (start=0; range_all.compareEndPoints("StartToStart", range) < 0; start++) range_all.moveStart('character', 1); // get number of line breaks from textarea start to selection start and add them to start // 計算一下\n for (var i = 0; i <= start; i ++){ if (textBox.value.charAt(i) == '\n') start++; } // create a selection of the whole textarea var range_all = document.body.createTextRange(); range_all.moveToElementText(textBox); // calculate selection end point by moving beginning of range_all to end of range for (end = 0; range_all.compareEndPoints('StartToEnd', range) < 0; end ++) range_all.moveStart('character', 1); // get number of line breaks from textarea start to selection end and add them to end for (var i = 0; i <= end; i ++){ if (textBox.value.charAt(i) == '\n') end ++; } } } document.getElementById("start").value = start; document.getElementById("end").value = end; } </script> </head> <body> <formaction="a.cgi"> <tableborder="1"cellspacing="0"cellpadding="0"> <tr> <td>start: <inputtype="text"id="start"size="3"/></td> <td>end: <inputtype="text"id="end"size="3"/></td> </tr> <tr> <tdcolspan="2"> <textareaid="ta"onKeydown="savePos(this)" onKeyup="savePos(this)" onmousedown="savePos(this)" onmouseup="savePos(this)" onfocus="savePos(this)" rows="14"cols="50"></textarea> </td> </tr> <tr> <td><inputtype="text"id="inputtext" /></td> <td><inputtype="button"onClick="add()"value="Add Text"/></td> </tr> </table> </form> </body> </html>