2017-10-13 114 views
1

我有一個ajax方法,它從控制器獲取數據並顯示在Jquery對話框中。我的目標是在對話框中有一個按鈕,它允許點擊數據,而不是用戶使用鼠標突出顯示數據並進行復制。如何將ajax成功結果複製到剪貼簿

阿賈克斯

function GrabLink(surveyName) { 
    $.ajax({ 
     type: "GET", 
     url: "/Survey/sendLink", 
     data: { test: surveyName }, 
     contentType: "application/json; charset=utf-8", 
     success: function (data) { 

      $('#my-dialog').html(data); 
      $("#my-dialog").dialog("open"); 

      //alert(data); 
      //$("#my-dialog").show(data); 
     } 
    }) 
} 

jQuery的對話框

$('#my-dialog').dialog({ 
    autoOpen: false, 
    width: 400, 
    resizable: false, 
    modal: true, 
    buttons: { 
     'Copy': function() 
     { 
      //window.prompt("Copy to clipboard: Ctrl+C, Enter", text); 
      // $(this).dialog('close'); 

     } 

    } 
}); 
+0

看一看[剪貼板。 JS](https://clipboardjs.com/)。 –

+0

我的解決方案答案能解決您的問題嗎? –

+1

是的,它確實將其標記爲有效答案 – cedPound

回答

1

您可以在剪貼板使用execCommand的副本javascript。創建輸入時間,把裏面的數據,將其取下:

function clipboard(){ 
    var mydata = document.createElement("input"); 
    document.body.appendChild(mydata); 
    mydata.setAttribute("id", "mydata_id"); 
    document.getElementById("mydata_id").value=Yourdata-success-response; 
    mydata.select(); 
    document.execCommand("copy"); 
    document.body.removeChild(mydata); 
} 
-1

嘗試下面的代碼,拷貝數據,而文本的選擇/數據

<head> 
 
    <script type="text/javascript"> 
 
     function CopyToClipboard() { 
 
      var input = document.getElementById ("toClipboard"); 
 
      var textToClipboard = input.value; 
 
      
 
      var success = true; 
 
      if (window.clipboardData) { // Internet Explorer 
 
       window.clipboardData.setData ("Text", textToClipboard); 
 
      } 
 
      else { 
 
        // create a temporary element for the execCommand method 
 
       var forExecElement = CreateElementForExecCommand (textToClipboard); 
 

 
         /* Select the contents of the element 
 
          (the execCommand for 'copy' method works on the selection) */ 
 
       SelectContent (forExecElement); 
 

 
       var supported = true; 
 

 
        // UniversalXPConnect privilege is required for clipboard access in Firefox 
 
       try { 
 
        if (window.netscape && netscape.security) { 
 
         netscape.security.PrivilegeManager.enablePrivilege ("UniversalXPConnect"); 
 
        } 
 

 
         // Copy the selected content to the clipboard 
 
         // Works in Firefox and in Safari before version 5 
 
        success = document.execCommand ("copy", false, null); 
 
       } 
 
       catch (e) { 
 
        success = false; 
 
       } 
 
       
 
        // remove the temporary element 
 
       document.body.removeChild (forExecElement); 
 
      } 
 

 
      if (success) { 
 
       alert ("The text is on the clipboard, try to paste it!"); 
 
      } 
 
      else { 
 
       alert ("Your browser doesn't allow clipboard access!"); 
 
      } 
 
     } 
 

 
     function CreateElementForExecCommand (textToClipboard) { 
 
      var forExecElement = document.createElement ("div"); 
 
       // place outside the visible area 
 
      forExecElement.style.position = "absolute"; 
 
      forExecElement.style.left = "-10000px"; 
 
      forExecElement.style.top = "-10000px"; 
 
       // write the necessary text into the element and append to the document 
 
      forExecElement.textContent = textToClipboard; 
 
      document.body.appendChild (forExecElement); 
 
       // the contentEditable mode is necessary for the execCommand method in Firefox 
 
      forExecElement.contentEditable = true; 
 

 
      return forExecElement; 
 
     } 
 

 
     function SelectContent (element) { 
 
       // first create a range 
 
      var rangeToSelect = document.createRange(); 
 
      rangeToSelect.selectNodeContents (element); 
 

 
       // select the contents 
 
      var selection = window.getSelection(); 
 
      selection.removeAllRanges(); 
 
      selection.addRange (rangeToSelect); 
 
     } 
 
    </script> 
 
</head> 
 
<body> 
 
    <input id="toClipboard" value="text to clipboard"/> 
 
    <button onclick='CopyToClipboard()'>Copy text to clipboard</button> 
 
</body