簡體   English   中英

如何確定 onChange 事件是否被 onPaste 調用

[英]How to determine if an onChange event was called by an onPaste

我有一個與onChange事件關聯的 Javascript 函數。 我了解某些瀏覽器在文檔或元素級別支持onPaste 有沒有辦法確定onChange事件是否是由“粘貼”引起的 - 我嘗試添加一個在onPaste時設置的全局onPaste ,然后在我的onChange例程結束時重置它,但不能保證onPaste函數在onChange之前被調用。

這對我來說很好:

<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>

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

我不認為你能普遍做到這一點。 查看測試此功能的當前狀態

檢測粘貼的一種方法是在字段獲得焦點后計算“按鍵”之間的時間。

每次看到 onchange 事件時,將字段值的當前長度與前一個長度進行比較,並將當前時間與前一個時間進行比較。 如果輸入字符的速度比人們想象的要快,那么它們一定是被粘貼了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM