我有一个与onChange
事件相关联的 Javascript 函数。我了解某些浏览器支持onPaste
文档或元素级别。有没有办法确定onChange
事件是否是由“粘贴”引起的 - 我尝试添加一个在onPaste
触发时设置的全局变量,然后在我的onChange
例程结束时将其重置,但不能保证onPaste
函数得到在onChange
.
问问题
5036 次
4 回答
1
这对我来说很好:
<input type="text" onchange="ValueChanged(event, this);" onpaste="this.setAttribute('pasted', '1');"/>
<script type="text/javascript">
function ValueChanged(evt, sender) {
var blnCameFromPaste = ((sender.getAttribute("pasted") || "") == "1");
if (blnCameFromPaste)
alert("changed by paste");
else
alert("changed without paste");
sender.setAttribute("pasted", "0")
}
</script>
于 2010-11-04T17:47:34.893 回答
1
您可以使用 onKeyPress/onKeyUp/onKeyDown/onPaste 而不是 onChange。
于 2010-11-08T15:25:54.110 回答
0
每次看到 onchange 事件时,将字段值的当前长度与之前的长度进行比较,并将当前时间与之前的时间进行比较。如果输入字符的速度比人们想象的要快,那么它们一定是被粘贴了。
于 2010-12-07T08:20:46.230 回答
0
我认为您无法普遍做到这一点。查看测试此功能的当前状态。
检测粘贴的一种方法是在字段获得焦点后计算“按键”之间的时间。
于 2010-11-04T17:25:45.043 回答