In addition to selection and scroll issues, needing to replace the entire textarea value doesn&#39;t scale and thus limits what sorts of things you can do with textareas. A general way to set a sub-part of a textarea&#39;s value seems useful to me. I don&#39;t think we should tie that to setting the selected text though.<div>

<br></div><div>textarea.setRangeText(start, end, text);</div><div><br></div><div>It replaces the text between start and end, maintains current scroll position and preserves the selection.</div><div><br></div><div>Ojan<br>

<br><div class="gmail_quote">On Mon, May 10, 2010 at 12:59 AM, Biju <span dir="ltr">&lt;<a href="mailto:bijumaillist@gmail.com">bijumaillist@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Current way in firefox is to<br>
<br>
1. OrigStart = textarea.selectionStart<br>
2.  textarea.value = textarea.value.substr(0, OrigStart)<br>
                          + new_text_to_replace<br>
                          + textarea.value.substr(textarea.selectionEnd);<br>
3. Now u loose original selection, so<br>
<br>
4.  textarea.setSelectionRange(OrigStart,  OrigStart+new_text_to_replace.length)<br>
5.  remember .scrollTop and reapply if needed<br>
<br>
Now if we are only changing few selected characters in TEXTAREA with<br>
big text content,<br>
we are unnecessarily replacing entire content, which is inefficient.<br>
<br>
<br>
On IE even though wierd you can do it simply by<br>
   document.selection.createRange().text = new_text_to_replace;<br>
BTW, you need to make sure the selection is currently on the<br>
textarea/input form control.<br>
IE is also very fast when doing that, when firefox hangs few second<br>
using the other way<br>
</blockquote></div><br></div>