我现在有这个:
<input type="text" placeholder="Paste text" onPaste="alert(this.value);">
这确实有效,除了它返回一个空白警报窗口。我没有任何价值。帮助?
我现在有这个:
<input type="text" placeholder="Paste text" onPaste="alert(this.value);">
这确实有效,除了它返回一个空白警报窗口。我没有任何价值。帮助?
该onpaste
事件在input
'svalue
更改之前触发。你需要一些东西,比如setTimeout
:
<input type="text" placeholder="Paste text" onPaste="var e=this; setTimeout(function(){alert(e.value);}, 4);">
我将对全局变量的引用存储this
在全局this
变量中,因为在附加到窗口对象的超时函数的范围内无法访问。
我使用 4 毫秒作为超时,因为它是 HTML5 规范中的最小有效间隔/超时。编辑:如评论中所述,您也可以使用0
毫秒作为 timeOut,它会自动重新计算为4
. jsPerf 测试。
您也可以在onpaste
事件传递中使用函数调用this
作为参数,以防止 HTML 与 JS 混合过多。:)
这是一个更易于阅读的函数,您可以在多个输入中使用它:
function pasted(element) {
setTimeout(function(){
alert(element.value);
}, 0); //or 4
}
onPaste="pasted(this)"
任何输入都可以简单地调用它。
这是因为onpaste
事件在内容粘贴到元素(链接)之前触发,因此在您处理它时它还不存在。
现代浏览器支持在事件处理程序中获取剪贴板数据的方法。有关跨浏览器解决方案尝试,请参阅JavaScript 在粘贴事件(跨浏览器)上获取剪贴板数据。
此外,您始终可以通过在事件处理函数中启动一个计时器(10ms 应该足够)来解决您的问题,以便稍后检查您的输入值。