将多个输入的内容复制到剪贴板
Copying the contents of multiple inputs to the clipboard
我有一些字段带有一些文本。每个字段都有自己的按钮,用于复制到剪贴板。但是我无法让它以任何方式正常工作。
结构如下
<div class="field">
<input type="text" value="some text" />
<span class="copy">Copy!</span>
</div>
<div class="field">
<input type="text" value="some text2" />
<span class="copy">Copy!</span>
</div>
<div class="field">
<input type="text" value="some text3" />
<span class="copy">Copy!</span>
</div>
如果只有一个字段,下面的代码就可以工作,但是如果有多个呢?
$('.field').on('click', '.copy', function () {
var copyText = $('.field input');
copyText.select();
document.execCommand('copy');
});
我可能需要 each
和 closest
之类的东西,但我不知道如何应用它(
$('.field').each(function () {
var copyText = $('.field input');
$(this).on('click', '.copy', function () {
copyText.select();
document.execCommand('copy');
});
});
您需要使用 $(this) 和 prevAll()
https://api.jquery.com/prevall/
$('.field').on('click', '.copy', function () {
var copyText = $(this).prevAll("input");
var copyTextVal = $(copyText).val();
$(copyText).select();
document.execCommand('copy');
// debug infos
console.clear();
console.log(copyTextVal);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="field">
<input type="text" value="some text" />
<span class="copy">Copy!</span>
</div>
<div class="field">
<input type="text" value="some text2" />
<span class="copy">Copy!</span>
</div>
<div class="field">
<input type="text" value="some text3" />
<span class="copy">Copy!</span>
</div>
我有一些字段带有一些文本。每个字段都有自己的按钮,用于复制到剪贴板。但是我无法让它以任何方式正常工作。
结构如下
<div class="field">
<input type="text" value="some text" />
<span class="copy">Copy!</span>
</div>
<div class="field">
<input type="text" value="some text2" />
<span class="copy">Copy!</span>
</div>
<div class="field">
<input type="text" value="some text3" />
<span class="copy">Copy!</span>
</div>
如果只有一个字段,下面的代码就可以工作,但是如果有多个呢?
$('.field').on('click', '.copy', function () {
var copyText = $('.field input');
copyText.select();
document.execCommand('copy');
});
我可能需要 each
和 closest
之类的东西,但我不知道如何应用它(
$('.field').each(function () {
var copyText = $('.field input');
$(this).on('click', '.copy', function () {
copyText.select();
document.execCommand('copy');
});
});
您需要使用 $(this) 和 prevAll()
https://api.jquery.com/prevall/
$('.field').on('click', '.copy', function () {
var copyText = $(this).prevAll("input");
var copyTextVal = $(copyText).val();
$(copyText).select();
document.execCommand('copy');
// debug infos
console.clear();
console.log(copyTextVal);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="field">
<input type="text" value="some text" />
<span class="copy">Copy!</span>
</div>
<div class="field">
<input type="text" value="some text2" />
<span class="copy">Copy!</span>
</div>
<div class="field">
<input type="text" value="some text3" />
<span class="copy">Copy!</span>
</div>