我现在有这个:
<input type="text" placeholder="Paste text" onPaste="alert(this.value);">
这确实起作用,除了它返回空白的警告窗口。我没有任何值(value)。帮助?

最佳答案

onpaste事件在更改inputvalue之前触发。您需要诸如 setTimeout 之类的东西:

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

我将对this的引用存储在全局var中,因为this在连接到窗口对象的超时函数的范围内不可访问。

我使用4毫秒作为超时,因为它是HTML5规范中的最小有效间隔/超时。 编辑:如评论中所述,您还可以使用0毫秒作为timeOut,它会自动重新计算为4jsPerf tests

Fiddle

您也可以在onpaste事件内部使用函数调用,并将this作为参数传递,以防止HTML与JS过多混合。 :)

这是一个易于阅读的函数,可以在多个输入中使用:
function pasted(element) {
    setTimeout(function(){
        alert(element.value);
    }, 0); //or 4
}​

任何输入都可以使用onPaste="pasted(this)"进行调用。

Fiddle

关于javascript - Javascript OnPaste,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10972954/

10-10 00:32