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
Post a Comment