意外的粘贴事件行为

时间:2016-04-14 14:07:37

标签: javascript events paste

我为比赛创建了一个表格。我有4个文本框,每个文本框有4个字符,然后组合起来创建一个16位数的代码。这一切都很好。

  

示例代码: LAME DKAJ XWNS YXRZ

我的问题是,我想监视粘贴事件(如果用户决定粘贴代码)。但是,源头的16位数代码包含空格 - 我的目的是在这些空格处拆分代码,给我4组4个字符并自动填充方框。

但是,在使用粘贴事件时,我会遇到意外行为。例如,第一次将文本粘贴到框中时,该值的console.log返回一个空字符串。第二个粘贴记录了第一个粘贴的内容,依此类推。这向我表明它是在粘贴事件开始时记录的,而不是在将代码粘贴到文本框之后。我做错了,还是打算这样做?

如果这是粘贴事件的预期行为,那么如何在粘贴事件完成后捕获框中的文本?

  

https://jsfiddle.net/h4w946js/(检查控制台)

// JS CODE

function splitCode(){
    var input = document.getElementById('part1');

    input.addEventListener('paste', function(){
        console.log(this.value);
    })
}

1 个答案:

答案 0 :(得分:2)

获取粘贴文本使用此代码:

input.addEventListener('paste', function(e) {
    if (window.clipboardData && window.clipboardData.getData) { // IE
        console.log(window.clipboardData.getData('Text'));
    } else if (e.clipboardData && e.clipboardData.getData) { // other browsers
        console.log(e.clipboardData.getData('text/plain'));
    }
});