js propertychange和oninput事件,jsoninput
還好有propertychange(IE)和oninput事件。
oninput是標準瀏覽器的事件,一般應用於input元素,當input的value發生變化時就會發生,無論是鍵盤輸入還是滑鼠粘貼的改變都能即時監聽到。
瀏覽器安全色
IE9以下是不支援的。這個時候就要用到IE專有的propertychange事件。顧名思義,翻譯過來叫屬性變更事件,這個事件就比較強大了,不僅僅會監聽到input的value屬性,還包括其他標籤的屬性各種屬性發生變化都會發生該事件,比如span元素的style屬性。在事件發生時還可以用event.propertyName訪問到改變的屬性名稱。
讓IE的onpropertychange事件在js改變value的時不觸發事件!!
e. 好糾結。
你在用js 給被監聽的控制項對象 賦值時。 先給一個全域變數 賦個值比如: isJSRuning = true;
然後在監聽響應事件中 if(isJSRuning) return; 不就結了。。。。。
個人認為不是非要去改人家底層的運行邏輯才是高端作法。 沒必要的吧。
對於js的onchange方法
再補充下關於幾個事件的區別:1、onchange事件與onpropertychange事件的區別:onchange事件在內容改變(兩次內容有可能還是相等的)且失去焦點時觸發;onpropertychange事件卻是即時觸發,即每增加或刪除一個字元就會觸發,通過js改變也會觸發該事件,但是該事件IE專有。2、oninput事件與onpropertychange事件的區別:oninput事件是IE之外的大多數瀏覽器支援的事件,在value改變時觸發,即時的,即每增加或刪除一個字元就會觸發,然而通過js改變value時,卻不會觸發;onpropertychange事件是任何屬性改變都會觸發的,而oninput卻只在value改變時觸發,oninput要通過addEventListener()來註冊,onpropertychange註冊方式跟一般事件一樣。(此處都是指在js中動態綁定事件,以實現內容與行為分離)3、oninput與onpropertychange失效的情況:(1)oninput事件:a). 當指令碼中改變value時,不會觸發;b). 從瀏覽器的自動下拉提示中選取時,不會觸發。(2)onpropertychange事件:當input設定為disable=true後,onpropertychange不會觸發。