Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Copying text of textarea in clipboard when button is clicked

I'm looking to create a jQuery (or javascript) button that selects everything in a textarea and then copies the text to your clipboard when you clicked on button.

I have found some examples using the focus event. But I'm looking for a button that you actually have to click for the select and copy.

How can i do this work?

like image 575
GRU119 Avatar asked Jun 06 '16 13:06

GRU119


People also ask

How do you copy text to clipboard on a button click?

The next most common work-around is to just place the clipboard-bound text into an input field, move the focus to that field and advise the user to press Ctrl + C to copy the text.

How do you make text copyable in HTML?

The function copies the visible text of the element to the clipboard. This works as if you had selected the text and copied it with ctrl+c. Use the parameter "id" to select the element you want to copy.


3 Answers

You need to use select() to selecting text of textarea and use execCommand('copy') to coping selected text. Its work in upper version of browsers.

$("button").click(function(){
    $("textarea").select();
    document.execCommand('copy');
});

Also you can do this work without jquery as shown in bottom

document.querySelector("button").onclick = function(){
    document.querySelector("textarea").select();
    document.execCommand('copy');
}

document.querySelector("button").onclick = function(){
  document.querySelector("textarea").select();
  document.execCommand('copy');
};
<button>Select</button>
<br/>
<textarea></textarea>
like image 165
Mohammad Avatar answered Oct 13 '22 20:10

Mohammad


It is possible to make this without using jQuery.

Here's a pure js solution.

function copy() {
  let textarea = document.getElementById("textarea");
  textarea.select();
  document.execCommand("copy");
}
<textarea id="textarea"></textarea>
<br>
<button onclick="copy()">Copy</button>
like image 38
karoluS Avatar answered Oct 13 '22 19:10

karoluS


When your textarea element has disabled for some reason, or if you don't want to visual effect of selected texts, then the solution below works for you.

$("#button_id").click(function(){
    var $temp = $("<textarea></textarea>");
    $("body").append($temp);
    $temp.val($("#textarea_source").val()).select();     <-- #textarea_source: id of textarea source to be copied to the clipboard
    document.execCommand("copy");
    $temp.remove();
})
like image 33
brucelin Avatar answered Oct 13 '22 19:10

brucelin