我现在有这个权利:
<input type="text" placeholder="Paste text" onPaste="alert(this.value);">
这确实INFACT工作,但,它返回一个空白的警告窗口。 我没有得到任何价值。 救命?
我现在有这个权利:
<input type="text" placeholder="Paste text" onPaste="alert(this.value);">
这确实INFACT工作,但,它返回一个空白的警告窗口。 我没有得到任何价值。 救命?
所述onpaste
的前事件触发input
的value
被改变。 你需要的东西,如setTimeout
:
<input type="text" placeholder="Paste text" onPaste="var e=this; setTimeout(function(){alert(e.value);}, 4);">
我存储到一个参考this
一个全局变量里面作为this
不属于其贴在车窗对象超时功能的范围内使用。
我使用的是4毫秒的超时,因为它是在HTML5规范的最低有效间隔/超时。 编辑:正如在评论中指出的那样,你也可以使用0
毫秒为超时被自动重新计算到4
。 jsPerf测试 。
小提琴
你不妨用你的内部函数调用onpaste
事件传递this
作为参数,以防止你的HTML与JS混合太多。 :)
这里还有一个功能更易于阅读,哪些是你可以在多个投入使用:
function pasted(element) {
setTimeout(function(){
alert(element.value);
}, 0); //or 4
}
其可以与简单地称为onPaste="pasted(this)"
任何输入。
小提琴
这是因为onpaste
内容之前事件触发被粘贴到元素( 链接 ),所以它现在还没有在你处理它的时间。
现代浏览器都支持获取事件处理中的剪贴板数据的方法。 请参阅JavaScript的获得上粘贴事件(跨浏览器)剪贴板数据的跨浏览器解决方案的尝试。
此外,您还可以随时通过简单地开始在事件处理功能的定时器(10ms的应该是足够了),后来会检查您输入的数值解决您的问题。