捕获CTRL + V会导致问题

时间:2015-02-16 11:20:24

标签: javascript jquery

我的代码在输入字段中成功捕获 CTRL + V /粘贴" sURL"通过jQuery。但是之后如何直接获取粘贴的文字?

我的提醒会提示空值。第二次粘贴后,它会提示第一个粘贴的文本。但我想将粘贴的文本切换到第一个 CTRL + V 之后的函数。

有什么想法吗?非常感谢!

$(document).ready(function() {
    $("#sURL").bind('paste', function(e) {
        alert(document.WA.sURL.value);   <!-- returns empty value at 1st paste
    });
});

3 个答案:

答案 0 :(得分:2)

您可以从事件e上的剪贴板数据中获取粘贴的文本。下面的代码应该有效:

$(document).ready(function() {
    $("#sURL").bind('paste', function(e) {
        alert(e.originalEvent.clipboardData.getData('Text'));
    });
});

我已经创建了一个fiddle来演示

答案 1 :(得分:0)

有几种方法可以解决:

1)使用clipboardData。这应该适用于IE

   $(document).ready(function() {
        $("#sURL").bind('paste', function(e) {
            alert(e.clipboardData.getData('Text'));  
        });
    });

2)您可以使用计时器并将其粘贴到ID为paste

的div中
$("#sURL").live('input paste',function(e){
        $('<textarea></textarea>').attr('id', 'paste').appendTo('#editMode');
        $("#paste").focus();
        setTimeout($(this).paste, 250);
});

试试看,让我知道:)

答案 2 :(得分:0)

使用此功能,可能涵盖所有情况

$("#sURL").on('paste',function(e) {
    e.preventDefault();
    var text = (e.originalEvent || e).clipboardData.getData('text/plain') || prompt('Paste something..');
    conosle.log(text);
    // myFunction(test);
});

function myFunction(str)
{
    // str contains the pasted string
    alert(str);
}