There is only one way I was able to do this. The problem you are facing is that when you click the button (while firing at an event to copy the selection), the text area loses focus and therefore the text is not selected.
So, as a workaround, I created a div to look (kind of like) like a text box. This seems to work:
<style type="text/css"> .textarea { border:1px solid black; width:200px; height:100px; overflow-y: auto; float:left; } </style>
Then the markup is as follows:
<div id="input" class="textarea">This is a test</div> <textarea id="selection"></textarea> <button id="theButton">Copy</button>
And finally, the script:
var selText = ""; $( document ).ready( function() { $( '#theButton' ).mousedown( function() { $( '#selection' ).val( getSelectedText() ); }); }); function getSelectedText(){ if ( window.getSelection ) { return window.getSelection().toString(); } else if ( document.getSelection ) { return document.getSelection(); } else if ( document.selection ) { return document.selection.createRange().text; } }
To give full credit where it appeared, I got the getSelectedText () method from http://esbueno.noahstokes.com/post/92274686/highlight-selected-text-with-jquery
source share