Editar: no intento copiar el área de texto o el valor de entrada, por lo que no es una pregunta duplicada como se sugiere.
¿Puedo usar copiar al portapapeles para el valor de texto de un elemento?
Como quiero copiar terra1
<span id="terra-wallet-address">terra1</span>Y jQuery:
jQuery('#terra-wallet-address').focus(); jQuery('#terra-wallet-address').select(); document.execCommand('copy'); jQuery('.copied').text("Copied to clipboard").show().fadeOut(1200);También probé .val() y .text() pero no funcionó.
Gracias.
Si no desea crear un área de texto temporal, puede seleccionar mediante programación el texto dentro del elemento (con Document.createRange y Range.selectNodeContents ) y luego llamar a execCommand .
Tenga en cuenta que deberá llamar a execCommand dentro de un controlador de eventos.
var r = document.createRange(); var w = document.getElementById("terra-wallet-address"); r.selectNodeContents(w); var sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(r); btn.addEventListener('click', function() { document.execCommand('copy'); jQuery('.copied').text("Copied to clipboard").show().fadeOut(1200); }) <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <span id="terra-wallet-address">terra1</span> <button id="btn">copy</button>Bueno, no puede focus() un elemento, pero puede usar otros métodos, como create range y luego ejecutar el comando copiar.
También creé una pequeña biblioteca que te permite copiar entradas, áreas de texto, divs y cualquier otro elemento: https://github.com/codingjlu/copyjs