首页 > 解决方案 > 将变量复制到剪贴板会创建一个我不需要的文本框

问题描述

我有一个数组,当我按下“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 键,我不希望它复制数据。

标签: javascriptjquerycopy-paste

解决方案


您需要调用.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. 所以你需要把它移出那里。


推荐阅读