Jquery select() 和将文本复制到剪贴板不起作用
Jquery select() and copy text to clipboard is not working
我正在尝试将文本从 table 行复制到我的剪贴板,但是,它不起作用。当 selected 并显示时,我已经在控制台的行中记录了文本,但是 select() 和 document.execCommand('copy') 不适用于此。
这是table
<table class="table table-two">
<div class="copied-toast"></div>
<tr>
<td>Login</td>
<td class="copy-me">2090862973</td>
<td>
<div class="text-copy"><img src="../images/icons/fi_copy.svg" /> copy</div>
</td>
<td></td>
</tr>
<tr>
<td>Password</td>
<td class="copy-me">XNFRNFN</td>
<td>
<div class="text-copy"><img src="../images/icons/fi_copy.svg" /> copy</div>
</td>
<td><img src="../images/icons/key.svg" /> Change</td>
</tr>
</table>
这是jquery
<script>
$(function () {
$(".copied-toast").hide();
$(".text-copy").click(function () {
$(this).closest("tr").find(".copy-me").select();
document.execCommand('copy');
$(".copied-toast").text("Copied!").show().fadeOut(1200);
});
});
</script>
这是工作示例。
$(function () {
$(".copied-toast").hide();
$(".text-copy").click(function () {
var $temp = $("<input>");
$("body").append($temp);
$temp.val($(this).closest("tr").find(".copy-me").text()).select();
document.execCommand('copy');
$(".copied-toast").text("Copied!").show().fadeOut(1200);
$temp.remove();
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="table table-two">
<div class="copied-toast"></div>
<tr>
<td>Login</td>
<td class="copy-me">2090862973</td>
<td>
<div class="text-copy"><img src="../images/icons/fi_copy.svg" /> copy</div>
</td>
<td></td>
</tr>
<tr>
<td>Password</td>
<td class="copy-me">XNFRNFN</td>
<td>
<div class="text-copy"><img src="../images/icons/fi_copy.svg" /> copy</div>
</td>
<td><img src="../images/icons/key.svg" /> Change</td>
</tr>
</table>
请尝试使用以下代码:
$(function () {
$(".copied-toast").hide();
$(".text-copy").click(function () {
var $temp = $("<input>");
$("body").append($temp);
$temp.val($(this).closest("tr").find(".copy-me").text()).select();
document.execCommand('copy');
$(".copied-toast").text("Copied!").show().fadeOut(1200);
$temp.remove();
});
});
我发现 document.execCommand()
现在已经过时了,所以我使用了 Clipboard API
$(function () {
$(".copied-toast").hide();
$(".text-copy").click(function () {
var copiedtext = $(this).closest("tr").find(".copy-me").text();
if (navigator.clipboard) {
navigator.clipboard.writeText(copiedtext)
.then(() => {
$(".copied-toast").text("Copied!").show().fadeOut(1200);
})
.catch((error) => {
$(".copied-toast").text("Not copied!").show().fadeOut(1200);
});
} else {
$(".copied-toast").text("Not copied!").show().fadeOut(1200);
}
});
});
我正在尝试将文本从 table 行复制到我的剪贴板,但是,它不起作用。当 selected 并显示时,我已经在控制台的行中记录了文本,但是 select() 和 document.execCommand('copy') 不适用于此。
这是table
<table class="table table-two">
<div class="copied-toast"></div>
<tr>
<td>Login</td>
<td class="copy-me">2090862973</td>
<td>
<div class="text-copy"><img src="../images/icons/fi_copy.svg" /> copy</div>
</td>
<td></td>
</tr>
<tr>
<td>Password</td>
<td class="copy-me">XNFRNFN</td>
<td>
<div class="text-copy"><img src="../images/icons/fi_copy.svg" /> copy</div>
</td>
<td><img src="../images/icons/key.svg" /> Change</td>
</tr>
</table>
这是jquery
<script>
$(function () {
$(".copied-toast").hide();
$(".text-copy").click(function () {
$(this).closest("tr").find(".copy-me").select();
document.execCommand('copy');
$(".copied-toast").text("Copied!").show().fadeOut(1200);
});
});
</script>
这是工作示例。
$(function () {
$(".copied-toast").hide();
$(".text-copy").click(function () {
var $temp = $("<input>");
$("body").append($temp);
$temp.val($(this).closest("tr").find(".copy-me").text()).select();
document.execCommand('copy');
$(".copied-toast").text("Copied!").show().fadeOut(1200);
$temp.remove();
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="table table-two">
<div class="copied-toast"></div>
<tr>
<td>Login</td>
<td class="copy-me">2090862973</td>
<td>
<div class="text-copy"><img src="../images/icons/fi_copy.svg" /> copy</div>
</td>
<td></td>
</tr>
<tr>
<td>Password</td>
<td class="copy-me">XNFRNFN</td>
<td>
<div class="text-copy"><img src="../images/icons/fi_copy.svg" /> copy</div>
</td>
<td><img src="../images/icons/key.svg" /> Change</td>
</tr>
</table>
请尝试使用以下代码:
$(function () {
$(".copied-toast").hide();
$(".text-copy").click(function () {
var $temp = $("<input>");
$("body").append($temp);
$temp.val($(this).closest("tr").find(".copy-me").text()).select();
document.execCommand('copy');
$(".copied-toast").text("Copied!").show().fadeOut(1200);
$temp.remove();
});
});
我发现 document.execCommand()
现在已经过时了,所以我使用了 Clipboard API
$(function () {
$(".copied-toast").hide();
$(".text-copy").click(function () {
var copiedtext = $(this).closest("tr").find(".copy-me").text();
if (navigator.clipboard) {
navigator.clipboard.writeText(copiedtext)
.then(() => {
$(".copied-toast").text("Copied!").show().fadeOut(1200);
})
.catch((error) => {
$(".copied-toast").text("Not copied!").show().fadeOut(1200);
});
} else {
$(".copied-toast").text("Not copied!").show().fadeOut(1200);
}
});
});