jQuery绑定粘贴事件,如何获取粘贴的内容

IT技术 javascript jquery copy-paste paste
2021-03-12 07:33:39

我有一个 jquery token tagit 插件,我想绑定到 paste 事件以正确添加项目。

我可以像这样绑定到 paste 事件:

    .bind("paste", paste_input)

...

function paste_input(e) {
    console.log(e)
    return false;
}

如何获取实际粘贴的内容值?

6个回答

有一个适用于现代浏览器的 onpaste 事件。您可以使用对象getData上的函数访问粘贴的数据clipboardData

$("#textareaid").bind("paste", function(e){
    // access the clipboard using the api
    var pastedData = e.originalEvent.clipboardData.getData('text');
    alert(pastedData);
} );

请注意,从 jQuery 3 开始不推荐使用bindunbind。首选调用是on

所有现代浏览器都支持剪贴板 API

另请参阅:在 Jquery 如何处理粘贴?

您可以向pasteinput事件添加事件处理paste程序,事件处理程序上设置标志,并事件处理程序中检查该标志input其中,this.value是粘贴的值,这在 IE11 中有效。
2021-04-20 07:33:39
e.originalEvent.clipboardData.getData('text/plain') 为我工作
2021-04-26 07:33:39
如果您需要,IE 的解决方案: window.clipboardData.getData('text')
2021-05-03 07:33:39
此代码将var pastedData =在行上给出错误Uncaught TypeError: Cannot read property 'getData' of undefined您需要更改e.clipboardDatae.originalEvent.clipboardData. 我怀疑是因为 jquery 将实际的粘贴事件包装在它自己的事件中——不过不要引用我的话。
2021-05-15 07:33:39

这个怎么样:http : //jsfiddle.net/5bNx4/

.on如果您使用的是 jq1.7 等,请使用

行为:当您paste在第一个 textarea 上键入任何内容或任何内容时,下面的 textarea 会捕获更改。

休息我希望它有助于事业。 :)

有用的链接 =>

你如何处理 jQuery 中的 oncut、oncopy 和 onpaste?

捕捉粘贴输入

编辑:其中的
事件列表.on()应以空格分隔。参考 https://api.jquery.com/on/

代码

$(document).ready(function() {
    var $editor    = $('#editor');
    var $clipboard = $('<textarea />').insertAfter($editor);
  
    if(!document.execCommand('StyleWithCSS', false, false)) {
        document.execCommand('UseCSS', false, true);
    }
        
    $editor.on('paste keydown', function() {
        var $self = $(this);            
        setTimeout(function(){ 
            var $content = $self.html();             
            $clipboard.val($content);
        },100);
     });
});
它不适合上下文菜单粘贴(右键单击+粘贴),对此有何想法?
2021-04-15 07:33:39
@Raminson 是的,我呆undefined了几天:P
2021-04-16 07:33:39

我最近需要完成类似的事情。我使用以下设计来访问粘贴元素和值。jsFiddle 演示

$('body').on('paste', 'input, textarea', function (e)
{
    setTimeout(function ()
    {
        //currentTarget added in jQuery 1.3
        alert($(e.currentTarget).val());
        //do stuff
    },0);
});

另一种方法:该input事件也将捕获该paste事件。

$('textarea').bind('input', function () {
    setTimeout(function () { 
        console.log('input event handled including paste event');
    }, 0);
});
$(document).ready(function() {
    $("#editor").bind('paste', function (e){
        $(e.target).keyup(getInput);
    });

    function getInput(e){
        var inputText = $(e.target).html(); /*$(e.target).val();*/
        alert(inputText);
        $(e.target).unbind('keyup');
    }
});