1. 程式人生 > >oninput、onchange與onpropertychange事件的區別

oninput、onchange與onpropertychange事件的區別

觸發 對象 版權 自動 失去 名稱 右鍵菜單 發生 方案

oninput、onchange與onpropertychange事件的區別

onchange事件只在鍵盤或者鼠標操作改變對象屬性,value的值發生變化且失去焦點時觸發,用戶js改變value時無法觸發;

onkeydown/onkeypress/onkeyup鍵盤事件來監測的話,監聽不了右鍵的復制、剪貼和粘貼這些操作。

oninput是標準瀏覽器的事件,對於檢測 textarea, input:text,input:password 和 input:search 這幾個元素通過用戶界面發生的內容變化非常有用,在內容修改後立即被觸發,不像 onchange 事件需要失去焦點才觸發,但是通過js改變value時,卻不會觸發。

onpropertychange 是 IE 特有的事件,這個事件在用戶界面改變或者使用腳本直接修改內容兩種情況下都會觸發:

修改了 input:checkbox 或者 input:radio 元素的選擇中狀態, checked 屬性發生變化。
修改了 input:text 或者 textarea 元素的值,value 屬性發生變化。
修改了 select 元素的選中項,selectedIndex 屬性發生變化。

在監聽到 onpropertychange 事件後,可以使用 event 的 propertyName 屬性來獲取發生變化的屬性名稱。

oninput與onpropertychange失效的情況:

(1)oninput事件:a). 當腳本中改變value時,不會觸發;b).從瀏覽器的自動下拉提示中選取時,不會觸發。

(2)onpropertychange事件:當input設置為disable=true後,onpropertychange不會觸發。

(3)oninput 和 onpropertychange 這兩個事件在 IE9 中都有個小BUG,那就是通過右鍵菜單菜單中的剪切和刪除命令刪除內容的時候不會觸發,而 IE 其他版本都是正常的,目前還沒有很好的解決方案。
---------------------
作者:丁湯湯
來源:CSDN
原文:https://blog.csdn.net/u010035608/article/details/51329152
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

oninput、onchange與onpropertychange事件的區別