&lt;html&gt;<br /> &lt;head&gt;<br /> &lt;title&gt;TEST&lt;/title&gt;<br /> &lt;style&gt;<br /> body,td{<br /> font-family: verdana, arial, helvetica, sans-serif;<br /> font-size: 12px;<br /> }<br /> &lt;/style&gt;<br /> &lt;script type=&quot;text/javascript&quot;&gt;<br /> var start=0;<br /> var end=0;<br /> function add(){ <br /> var textBox = document.getElementById(&quot;ta&quot;);<br /> var pre = textBox.value.substr(0, start);<br /> var post = textBox.value.substr(end);<br /> textBox.value = pre + document.getElementById(&quot;inputtext&quot;).value + post;<br /> }<br /> function savePos(textBox){<br /> //如果是Firefox(1.5)的话,方法很简单<br /> if(typeof(textBox.selectionStart) == &quot;number&quot;){<br /> start = textBox.selectionStart;<br /> end = textBox.selectionEnd;<br /> }<br /> //下面是IE(6.0)的方法,麻烦得很,还要计算上'\n'<br /> else if(document.selection){<br /> var range = document.selection.createRange();<br /> if(range.parentElement().id == textBox.id){<br /> // create a selection of the whole textarea<br /> var range_all = document.body.createTextRange();<br /> range_all.moveToElementText(textBox);<br /> //两个range,一个是已经选择的text(range),一个是整个textarea(range_all)<br /> //range_all.compareEndPoints()比较两个端点,如果range_all比range更往左(further to the left),则 //返回小于0的值,则range_all往右移一点,直到两个range的start相同。<br /> // calculate selection start point by moving beginning of range_all to beginning of range<br /> for (start=0; range_all.compareEndPoints(&quot;StartToStart&quot;, range) &lt; 0; start++)<br /> range_all.moveStart('character', 1);<br /> // get number of line breaks from textarea start to selection start and add them to start<br /> // 计算一下\n<br /> for (var i = 0; i &lt;= start; i ++){<br /> if (textBox.value.charAt(i) == '\n')<br /> start++;<br /> }<br /> // create a selection of the whole textarea<br /> var range_all = document.body.createTextRange();<br /> range_all.moveToElementText(textBox);<br /> // calculate selection end point by moving beginning of range_all to end of range<br /> for (end = 0; range_all.compareEndPoints('StartToEnd', range) &lt; 0; end ++)<br /> range_all.moveStart('character', 1);<br /> // get number of line breaks from textarea start to selection end and add them to end<br /> for (var i = 0; i &lt;= end; i ++){<br /> if (textBox.value.charAt(i) == '\n')<br /> end ++;<br /> }<br /> }<br /> }<br /> document.getElementById(&quot;start&quot;).value = start;<br /> document.getElementById(&quot;end&quot;).value = end;<br /> }<br /> &lt;/script&gt;<br /> &lt;/head&gt;<br /> &lt;body&gt;<br /> &lt;form action=&quot;a.cgi&quot;&gt;<br /> &lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;<br /> &lt;tr&gt;<br /> &lt;td&gt;start: &lt;input type=&quot;text&quot; id=&quot;start&quot; size=&quot;3&quot;/&gt;&lt;/td&gt;<br /> &lt;td&gt;end: &lt;input type=&quot;text&quot; id=&quot;end&quot; size=&quot;3&quot;/&gt;&lt;/td&gt;<br /> &lt;/tr&gt;<br /> &lt;tr&gt;<br /> &lt;td colspan=&quot;2&quot;&gt;<br /> &lt;textarea id=&quot;ta&quot; onKeydown=&quot;savePos(this)&quot; <br /> onKeyup=&quot;savePos(this)&quot; <br /> onmousedown=&quot;savePos(this)&quot; <br /> onmouseup=&quot;savePos(this)&quot; <br /> onfocus=&quot;savePos(this)&quot; <br /> rows=&quot;14&quot; cols=&quot;50&quot;&gt;&lt;/textarea&gt;<br /> &lt;/td&gt;<br /> &lt;/tr&gt;<br /> &lt;tr&gt;<br /> &lt;td&gt;&lt;input type=&quot;text&quot; id=&quot;inputtext&quot; /&gt;&lt;/td&gt;<br /> &lt;td&gt;&lt;input type=&quot;button&quot; onClick=&quot;add()&quot; value=&quot;Add Text&quot;/&gt;&lt;/td&gt;<br /> &lt;/tr&gt;<br /> &lt;/table&gt;<br /> &lt;/form&gt;<br /> &lt;/body&gt;<br /> &lt;/html&gt;<br /> <br />
T:0.007238s,M:252.05 KB
返回顶部 留言