选择可变字符串值

时间:2019-02-20 15:39:54

标签: javascript

我想从文本框中获取输入,将其值与字符串连接,然后将其复制到剪贴板。

我陷入.select()的困境,因为它不适用于该变量。我在alert之前插入了.select()来检查它的值,但这没关系。警报值应复制到剪贴板。

function copyLink() {
  var siteNumber = document.getElementById("number");
  var home = "http://www.website.com/site";
  var link = home.concat(siteNumber.value);
  alert(link);
  link.select();
  document.execCommand("copy");
  alert("Copied the text: " + link);
}
<input type="text" id="number">
<button onclick="copyLink()">Copy input as link</button>

3 个答案:

答案 0 :(得分:1)

似乎您需要将dom的值附加到select。在这种情况下,请创建一个hidden输入,并将其值添加为link。然后再次复制后,将其设置为空字符串。

对于字符串连接,您可以使用+

function copyLink() {
  var siteNumber = document.getElementById("number");
  var home = "http://www.website.com/site";
  var link = home + siteNumber.value;
  let _h = document.getElementById('hiddenIp');
  _h.value = link
  //alert(link);
  _h.select();
  document.execCommand("copy");
  _h.value = '';
  alert("Copied the text: " + link);
}
<input type="text" id="number">

<button onclick="copyLink()">Copy input as link</button>

<input type='hidden' id='hiddenIp'>

答案 1 :(得分:0)

要复制的文本必须在DOM的元素中,这就是您所谓的select(不是字符串)。查看评论:

function copyLink() {
  // Get the value
  var siteNumber = document.getElementById("number").value;
  // Build the link
  var link = "http://www.website.com/site" + siteNumber;
  // Create an input to put it in and append it to the DOM
  var input = document.createElement("input");
  input.value = link;
  document.body.appendChild(input);
  // Select and copy
  input.select();
  document.execCommand("copy");
  // Remove the temporary input
  document.body.removeChild(input);
  alert("Copied the text: " + link);
}
<input type="text" id="number">
<button onclick="copyLink()">Copy input as link</button>

答案 2 :(得分:0)

select()仅适用于元素。您需要创建一个。

或者您可以在输入元素中临时保存值。

function copyLink() {
  var siteNumber = document.getElementById("number");
  var home = "http://www.website.com/site";
  var temp = siteNumber.value  

  siteNumber.value = home + temp
  siteNumber.select();
  document.execCommand("copy");
  alert("Copied the text: " + siteNumber.value);

  siteNumber.value = temp
}
<input type="text" id="number">
<button onclick="copyLink()">Copy input as link</button>