Copy Text To Clipboard Using .select() Getting Uncaught Typeerror
I'm trying to follow this code: https://www.w3schools.com/howto/howto_js_copy_clipboard.asp HTML Modal:
Solution 1:
You are receiving the error because .select
is a function bound to input elements. You're currently trying to call select on your fullLink
string. We need to create an input element and give it your value. Something like this:
var copyBtn = document.getElementById('copyBtn');
copyBtn.onclick = function(){
var myCode = document.getElementById('appID').value;
var fullLink = document.createElement('input');
document.body.appendChild(fullLink);
fullLink.value = "http://fulllink/" + myCode;
fullLink.select();
document.execCommand("copy", false);
fullLink.remove();
alert("Copied the text: " + fullLink.value);
}
<inputid="appID"value="123"></input><buttonid="copyBtn">Copy</button>
Solution 2:
It's happens because your var fullLink
is not a DOM node but a simple text. Function select
defined for DOM nodes.
Solution 3:
If you delete tabindex="-1"
then it works.
Solution 4:
I had similar problem,try this code
$('#copyBtn').click(function() {
var text=$('#appID').text();
navigator.clipboard.writeText(text);
});
Solution 5:
A very elegant way of doing it would be by creating a text area element, that would allow us to take advantage of the .select function.
JS code:
functioncopyStringToClipboard (str) {
// Create new elementvar el = document.createElement('textarea');
// Set value (string to be copied)
el.value = str;
// Set non-editable to avoid focus and move outside of view
el.setAttribute('readonly', '');
el.style = {position: 'absolute', left: '-9999px'};
document.body.appendChild(el);
// Select text inside element
el.select();
// Copy text to clipboarddocument.execCommand('copy');
// Remove temporary elementdocument.body.removeChild(el);
}
Example of the function being called:
copyStringToClipboard("abc123");
An example is provided at:
shorturl.at/hLWX7
Post a Comment for "Copy Text To Clipboard Using .select() Getting Uncaught Typeerror"