我有一個與onChange事件關聯的Javascript函數。我知道一些瀏覽器在文檔或元素級別上支持onPaste。有沒有辦法確定onChange事件是否由「粘貼」引起 - 我嘗試添加一個全局變量,在onPaste被觸發時設置,然後在我的onChange例程結束時重置它,但不能保證OnCaste函數在onChange之前被調用。如何確定onChange事件是否由onPaste調用
回答
我不認爲你能夠做到這一點普遍。請參閱測試此功能的current state。
檢測粘貼的一種方法是計算字段具有焦點後「按鍵」之間的時間。
這個工作對我罰款:
<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-04 17:55:26
IE8和Chrome 7. – 2010-11-05 03:45:57
你可以用onkeypress事件/的onkeyup /的onkeydown/onPaste代替的onChange。
也可以使用'input'事件。除了IE之外,所有瀏覽器都支持'input',可以使用'propertychange'事件非常有效地模擬IE。除了捕獲按下什麼鍵以外,'input' /'propertychange'事件還可以處理關鍵事件所需的一切。 – eyelidlessness 2010-12-07 08:36:07
每次看到onchange事件時,都會將該字段值的當前長度與上一個長度進行比較,並將當前時間與上一次進行比較。如果字符輸入的速度比人們能夠想象的更快,那麼它們一定是被粘貼的。
- 1. 確定事件是否被.trigger()調用
- 2. ckeditor - onpaste事件
- 3. onchange事件是否傳播?
- 4. 如何確定是否引發事件
- 5. IE onPaste事件使用JavaScript不是HTML
- 6. 如何調用OnChange DatePicker事件
- 7. IE onpaste JavaScript事件
- 8. ReactJS onPaste事件:如何確定用戶是否選擇了一些textarea的現有內容
- 9. 如何使用onchange事件?
- 10. 如何onchange事件
- 11. 如何在redux中調度onchange事件?
- 12. 如何確定事件是由用戶操作還是由代碼觸發的?
- 13. React路由器v4路由onchange事件
- 14. 淘汰賽onpaste事件
- 15. 如何確定我的UIButton事件是否是Touch Down?
- 16. 如何確定Javascript對象是否是事件?
- 17. 我是否正確使用onchange?
- 18. 如何捕獲onchange事件
- 19. 如何從OnChange事件
- 20. 如何「恢復」onchange事件
- 21. 如何檢查綁定事件是否被調用?
- 22. 確定UIWebView是否處理了事件
- 23. 如何確定onStateChange事件是由API還是用戶交互觸發的?
- 24. AJAX調用MVC中的OnChange事件
- 25. 如何更改使用jQuery的onChange事件的調用函數
- 26. 如何在IE中用JavaScript添加onpaste事件?
- 27. onchange事件不是woking
- 28. 如何確定render()是由顯式setState()調用還是由父組件傳遞道具來調用?
- 29. 如何在javascript下使用onchange事件
- 30. 如何使用JavaScript擴展onchange事件
'change'事件僅在文本字段模糊時觸發。如果發生多個變化,就不可能知道是什麼觸發了它。 – eyelidlessness 2010-12-07 08:29:55