javascript - How to get selected text/caret position of an input that doesn't have focus? -


is possible (reliably) selected text/caret position in input text box if field doesn't have focus?

if not, what's best way , retain data?

basically, when user clicks button want insert text @ caret position. however, user clicks button, field loses focus , lose caret position.

the following script hold caret position , button click insert text @ stored position:

javascript:

<script type="text/javascript"> //gets position of cursor function getcaret(el) {    if (el.selectionstart) {      return el.selectionstart;    } else if (document.selection) {      el.focus();       var r = document.selection.createrange();      if (r == null) {        return 0;      }       var re = el.createtextrange(),          rc = re.duplicate();      re.movetobookmark(r.getbookmark());      rc.setendpoint('endtostart', re);       return rc.text.length;    }     return 0;  }  function inserttext() {     var textarea = document.getelementbyid('txtarea');     var currentpos = getcaret(textarea);     var strleft = textarea.value.substring(0,currentpos);     var strmiddle = "-- hello world --";     var strright = textarea.value.substring(currentpos,textarea.value.length);     textarea.value = strleft + strmiddle + strright; } </script> 

html:

<textarea id="txtarea" >lorem ipsum dolor sit amet, consectetur adipiscing elit.</textarea> <button onclick="inserttext();">insert text</button> 

the script can modified if want hold caret position in variable onblur.


Comments

Popular posts from this blog

c# - How to set Z index when using WPF DrawingContext? -

razor - Is this a bug in WebMatrix PageData? -

visual c++ - Using relative values in array sorting ( asm ) -