如何确定onPaste是否调用了onChange事件

时间:2010-11-04 17:17:12

标签: javascript javascript-events onchange onpaste

我有一个与onChange事件相关联的Javascript函数。我知道有些浏览器在文档或元素级别支持onPaste。有没有办法确定onChange事件是否是由“粘贴”引起的 - 我尝试添加一个在触发onPaste时设置的全局变量,然后在我的onChange例程结束时重置它,但不能保证在onChange之前调用onPaste函数。

4 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

您可以使用onKeyPress / onKeyUp / onKeyDown / onPaste而不是onChange。

答案 2 :(得分:0)

我认为你不能普遍这样做。请参阅测试此功能的current state

检测粘贴的一种方法是在字段有焦点后计算“按键”之间的时间。

答案 3 :(得分:0)

每次看到onchange事件时,都会将字段值的当前长度与之前的长度进行比较,并将当前时间与上一次的长度进行比较。如果输入的字符比人们可以想象的更快输入,则必须粘贴它们。