使用jQuery/JavaScript将文本框值复制到剪贴板

bkhjykvo  于 2023-05-17  发布在  jQuery
关注(0)|答案(4)|浏览(133)

我有一个textbox & button,看起来像这样:

<div class="col-xs-11" style="padding:20px 0 ">
     <input type="text" class="form-control txtKeywords" id="txtKeyw" style="margin-bottom:10px; height:45px;" maxlength="80" placeholder="Click on keywords to combine your title">
   <button type="submit" class="btn btn-space btn-success btn-shade4 btn-lg copyToClipboard">
    <i class="icon icon-left s7-mouse"></i> Copy to Clipboard
     /button>

当用户单击复制到剪贴板按钮时,我想将文本框的内容复制到剪贴板中,如下所示:

$(document).on("click", ".copyToClipboard", function () {
    copyToClipboard("txtKeyw");
    successMessage();
});

其中copyToClipboard函数的定义为:

function copyToClipboard(element) {
            var $temp = $("<input>");
            $("body").append($temp);
            $temp.val($(element).text()).select();
            document.execCommand("copy");
            $temp.remove();
        }

但是当我这样做时,什么也没有发生--没有值从文本框复制到剪贴板...我做错了什么?

更多信息:

  • 这在Chrome 59 64位和Firefox 54 32位中都会发生。
  • successMessage()被调用并显示在浏览器中。
  • 在元素的ID前面添加#并不能解决这个问题。
rwqw0loc

rwqw0loc1#

**步骤1:**像这样更改copyToClipboard(element)

function copyToClipboard(text) {

   var textArea = document.createElement( "textarea" );
   textArea.value = text;
   document.body.appendChild( textArea );       
   textArea.select();

   try {
      var successful = document.execCommand( 'copy' );
      var msg = successful ? 'successful' : 'unsuccessful';
      console.log('Copying text command was ' + msg);
   } catch (err) {
      console.log('Oops, unable to copy',err);
   }    
   document.body.removeChild( textArea );
}

*第二步: 给予你的按钮一个id,然后给它添加一个事件监听器,如下所示:

$( '#btnCopyToClipboard' ).click( function()
 {
     var clipboardText = "";
     clipboardText = $( '#txtKeyw' ).val(); 
     copyToClipboard( clipboardText );
     alert( "Copied to Clipboard" );
 });
erhoui1w

erhoui1w2#

试试这个,这是正确的方法。

第一步:

function copyToClipboard(text) {

   var textArea = document.createElement( "textarea" );
   textArea.value = text;
   document.body.appendChild( textArea );

   textArea.select();

   try {
      var successful = document.execCommand( 'copy' );
      var msg = successful ? 'successful' : 'unsuccessful';
      console.log('Copying text command was ' + msg);
   } catch (err) {
      console.log('Oops, unable to copy');
   }

   document.body.removeChild( textArea );
}

第二步:

$( '#btnCopyToClipboard' ).click( function()
 {
     var clipboardText = "";

     clipboardText = $( '#txtKeyw' ).val();

     copyToClipboard( clipboardText );
     alert( "Copied to Clipboard" );
 });
eh57zj3b

eh57zj3b3#

copyToClipboard()获取一个元素作为参数。txtKeyw是id,你必须把#放在它前面。

ovfsdjhp

ovfsdjhp4#

我相信document.execCommand('copy ')现在已经被弃用了,在Edgev113.0和Operav98.0上测试过了
使用这个代替:

function copyToClipboard() {
  var txtField = document.getElementById('txt-field');
   txtField.select();
   navigator.clipboard.writeText(txtField.value);
  alert('Copied to clipboard!');
}

相关问题