JavaScript的OnPasteJavaScript的OnPaste(Javascript On

2019-05-17 14:14发布

我现在有这个权利:

<input type="text" placeholder="Paste text" onPaste="alert(this.value);">

这确实INFACT工作,但,它返回一个空白的警告窗口。 我没有得到任何价值。 救命?

Answer 1:

所述onpaste的前事件触发inputvalue被改变。 你需要的东西,如setTimeout

<input type="text" placeholder="Paste text" onPaste="var e=this; setTimeout(function(){alert(e.value);}, 4);">​

我存储到一个参考this一个全局变量里面作为this不属于其贴在车窗对象超时功能的范围内使用。

我使用的是4毫秒的超时,因为它是在HTML5规范的最低有效间隔/超时。 编辑:正如在评论中指出的那样,你也可以使用0毫秒为超时被自动重新计算到4jsPerf测试

小提琴

你不妨用你的内部函数调用onpaste事件传递this作为参数,以防止你的HTML与JS混合太多。 :)

这里还有一个功能更易于阅读,哪些是你可以在多个投入使用:

function pasted(element) {
    setTimeout(function(){
        alert(element.value);
    }, 0); //or 4
}​

其可以与简单地称为onPaste="pasted(this)"任何输入。

小提琴



Answer 2:

这是因为onpaste内容之前事件触发被粘贴到元素( 链接 ),所以它现在还没有在你处理它的时间。

现代浏览器都支持获取事件处理中的剪贴板数据的方法。 请参阅JavaScript的获得上粘贴事件(跨浏览器)剪贴板数据的跨浏览器解决方案的尝试。

此外,您还可以随时通过简单地开始在事件处理功能的定时器(10ms的应该是足够了),后来会检查您输入的数值解决您的问题。



文章来源: Javascript OnPaste