是否可以在不使用setTimeout()函数的情况下获取粘贴文本?

xon*_*n1c 7 javascript jquery events timeout paste

我发现当Hello使用鼠标粘贴文本(即)时,以下函数将抛出一个空的弹出窗口:

$('input:text').onpaste = function()
{
    alert($('input:text').val());
});
Run Code Online (Sandbox Code Playgroud)

问题是,当onpaste事件被触发时,文本实际上还没有粘贴到输入字段(至少这是我的猜测).所以将功能更改为:

$('input:text').onpaste = function()
{
    setTimeout(function()
    {
        alert($('input:text').val()
    }, 100);
}
Run Code Online (Sandbox Code Playgroud)

通过Hello在粘贴到输入字段时显示带有文本的弹出窗口来提供正确的结果.

现在我的问题是:是否有可能在不使用该setTimeout()功能的情况下捕获粘贴的文本?这种解决方法看起来很脏,所以我很乐意不必使用它.

kkthxbai xon1c

Mik*_*keM 11

您可以使用该oninput事件,现代浏览器支持此方法

http://jsfiddle.net/pxfunc/KDLjf/

$('input').bind('input', function(e) {
    console.log($(this).val());
}); 
Run Code Online (Sandbox Code Playgroud)