javascript - 将变量复制到剪贴板会创建一个我不需要的文本框
问题描述
我有一个数组,当我按下“c”键并左键单击按钮时,我想将它复制到剪贴板(参见下面的代码):
$(document).on('keydown', e => {
$(document).on('click', d => {
if (e.keyCode === 67) {
var dummyContent = [1, 2, 3];
var dummyContentTrue = dummyContent.join(', ');
var dummy = $('<input>').val(dummyContentTrue).appendTo('body').select()
document.execCommand('copy')
}
})
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
如代码所示,它创建了很多我的页面上无法拥有的文本框,并且在我放开“c”之后,这些框不会删除。我已经尝试过.remove()
,$('<input>')
但仍然无济于事。
任何帮助是极大的赞赏!(在我的代码片段中仅供参考,请确保按住字母 c 键并同时左键单击以查看结果)。
另外一个仅供参考,我只希望在同时按下 c 键和左键单击时进行复制。如果没有按下 c 键,我不希望它复制数据。
解决方案
您需要调用.remove()
一个元素或元素列表
所以,它应该是$( "input" ).remove()
或者,您可以将新创建的变量分配input
给变量并调用remove
该元素
var dummy = $('<input>'); // newly created element
dummy.val(dummyContentTrue).appendTo('body').select()
document.execCommand('copy')
dummy.remove() // remove the element
此外,每次您按下键时,都会将一个新的click
处理程序添加到document
. 所以你需要把它移出那里。
推荐阅读
- class - 在创建新实例时销毁类实例
- javascript - 通过 props 发送未定义的组件,因为它是在数据库查询结束之前挂载的
- python - ModuleNotFoundError:没有名为“tools.nnwrap”的模块(Windows)
- ruby-on-rails - 为什么 ActiveRecord::Store.store_accessor 在查询时不反映生成的 SQL
- php - 在输入中保存可编辑文本并保存到数据库中
- flutter - 放置手时的颤动手势
- javascript - 如何使用 javascript 创建 React Linkify
- intellij-idea - 在 Intelij IDEA 中使用 Cntrl + Z 折叠/展开代码部分
- sql - 如何在 Google Big Query 中插入 STRUCT 值?
- java - 如何读取一行并将其拆分以保存它?对第二个文件做同样的事情