单击按钮时在剪贴板中复制textarea的文本

GRU*_*119 25 javascript jquery textarea copy

我正在寻找创建一个jQuery(或javascript)button来选择a中的所有内容textarea,然后clipboard在单击按钮时将文本复制到您的文本中.

我找到了一些使用焦点事件的例子.但我正在寻找一个按钮,你实际上必须点击选择和复制.

我该怎么做这项工作?

Moh*_*mad 50

您需要使用select()选择文本textarea和用于execCommand('copy')处理选定的文本.它在上层版本的浏览器中工作.

$("button").click(function(){
    $("textarea").select();
    document.execCommand('copy');
});
Run Code Online (Sandbox Code Playgroud)

你也可以在没有jquery的情况下完成这项工作,如下图所示

document.querySelector("button").onclick = function(){
  document.querySelector("textarea").select();
  document.execCommand('copy');
};
Run Code Online (Sandbox Code Playgroud)
<button>Select</button>
<br/>
<textarea></textarea>
Run Code Online (Sandbox Code Playgroud)

  • 值得一提的是,如果“textarea”元素被标记为“disabled”,则上述内容将不起作用,因此您需要事先删除“disabled”属性。 (3认同)

Mat*_*udz 10

现代解决方案

document.execCommand('copy')现已弃用

相反,我们现在有剪贴板 API

您可以使用该writeText()属性来完成此操作:

$('button').on('click', () => {
  navigator.clipboard.writeText($('textarea').val()).then(
    () => {
      console.log('clipboard successfully set');
    },
    () => {
      console.error('clipboard write failed');
    }
  );
});
Run Code Online (Sandbox Code Playgroud)

或者只是简单地:

$('button').on('click', () => {
  navigator.clipboard.writeText($('textarea').val());
});
Run Code Online (Sandbox Code Playgroud)

奖励:这适用于禁用的文本区域,并且跨浏览器兼容


kar*_*luS 9

不使用jQuery就可以做到这一点.

这是一个纯粹的js解决方案.

function copy() {
  let textarea = document.getElementById("textarea");
  textarea.select();
  document.execCommand("copy");
}
Run Code Online (Sandbox Code Playgroud)
<textarea id="textarea"></textarea>
<br>
<button onclick="copy()">Copy</button>
Run Code Online (Sandbox Code Playgroud)